Commit Graph

1231 Commits

Author SHA1 Message Date
Rafael Espindola
588af2fb99 Add support for having different alignment for objects on call frames.
The x86-64 ABI states that objects passed on the stack have
8 byte alignment. Implement that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41768 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-07 14:52:14 +00:00
Anton Korobeynikov
8806c7b1f5 Split eh.select / eh.typeid.for intrinsics into i32/i64 versions. This is needed, because they just "mark" register
liveins and we let frontend solve type issue, not lowering code :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41763 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-07 11:39:35 +00:00
Anton Korobeynikov
325be7c608 Proper handle case, when aliasee is external weak symbol referenced only by alias itself.
Also, fix a case, when target doesn't have weak symbols supported.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41746 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-06 17:21:48 +00:00
Evan Cheng
61d9c861fd Fix a bug in X86InstrInfo::convertToThreeAddress that caused it to codegen:
leal    (,%rcx,8), %rcx
It should be
leal    (,%rcx,8), %ecx


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41735 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-06 00:14:41 +00:00
Dale Johannesen
c2ec2baf3d Change all floating constants that are not exactly
representable to use hex format.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41722 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-05 17:50:36 +00:00
Duncan Sands
e9685143f4 Testcases for PR1628.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41719 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-05 11:53:04 +00:00
Bill Wendling
c3536b8ecb Add the 64-bit versions of the DS* Altivec instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41717 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-05 04:05:20 +00:00
Evan Cheng
a34d395358 Fix for PR1632. EHSELECTION always produces a i32 value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41712 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-04 20:39:26 +00:00
Evan Cheng
67c906dce7 Fix for PR1613: added 64-bit rotate left PPC instructions and patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41711 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-04 20:20:29 +00:00
Evan Cheng
4e9c473c4d Fix a gcroot lowering bug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41668 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-01 02:00:51 +00:00
Rafael Espindola
1b5dcc34b7 Initial support for calling functions with byval arguments on x86-64
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41643 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-31 15:06:30 +00:00
Evan Cheng
144451fd99 Update test case to reflect Dale's change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41639 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-31 06:29:32 +00:00
Tanya Lattner
cad62802f4 Do not run on darwin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41608 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-30 16:07:20 +00:00
Evan Cheng
f4c3a59dba Added support to fold X86 load / store instructions. This allow rematerialized loads to be folded into their uses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41599 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-30 05:54:07 +00:00
Dan Gohman
9bd8a566eb Add explicit triples to avoid default behavior that varies by host.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41510 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-27 20:54:48 +00:00
Duncan Sands
56fe9b7396 Remove this test as it is too hard to fix after the
latest EH changes, and in any case it is hard to
imagine how the original bug could be reintroduced.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41497 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-27 17:08:14 +00:00
Duncan Sands
e22814b0a8 Now that we don't output cleanups by default, the action
offset needs to be adjusted in this test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41490 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-27 16:30:05 +00:00
Dan Gohman
5f43f92c69 If the source and destination pointers in an llvm.memmove are known
to not alias each other, it can be translated as an llvm.memcpy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41489 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-27 16:26:13 +00:00
Rafael Espindola
6b83b5d1ae call libc memcpy/memset if array size is bigger then threshold.
Coping 100MB array (after a warmup) shows that glibc 2.6.1 implementation on
x86-64 (core 2) is 30% faster (from 0.270917s to 0.188079s)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41479 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-27 10:18:20 +00:00
Chris Lattner
09ec1b0583 Allow target constants to be illegal types. The target should
know how to handle them.  This fixes 
test/CodeGen/Generic/asm-large-immediate.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41388 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-25 01:00:22 +00:00
Andrew Lenharth
16adc23858 update test to check that codegen works with llvm.used in llvm.metadata section
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41289 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-22 19:36:31 +00:00
Evan Cheng
1594b98836 Test dag xform: Fold C ? 0 : 1 to ~C or zext(~C) or trunc(~C)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41164 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-18 06:11:57 +00:00
Evan Cheng
3da927b95d New test. Make sure dynamic_stackalloc size is rounded up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41135 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-16 23:52:23 +00:00
Evan Cheng
cfc289d7b9 Update test: dynamic_stackalloc size *must* be rounded to ensure stack ptr be left in a valid state.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41134 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-16 23:51:28 +00:00
Rafael Espindola
24eb92e9ad add byval test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41123 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-16 13:09:02 +00:00
Lauro Ramos Venancio
c90f08936d Implement FPOWI ExpandOp.
Fix PR1287.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41112 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-15 22:13:27 +00:00
Evan Cheng
77f8b72af2 Test case for PR1609.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41110 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-15 20:30:10 +00:00
Dan Gohman
64d8e1b9a7 This test used "wc | grep ..."; convert it to use the count script.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41101 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-15 13:55:47 +00:00
Dan Gohman
43c3db37f6 Convert tests using "grep -c ... | grep ..." to use the count script.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41100 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-15 13:49:33 +00:00
Dan Gohman
e5ab8c6765 Delete extraneous uses of wc -l.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41099 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-15 13:45:35 +00:00
Dan Gohman
52f11f7c88 Convert another test to use the count script. This one didn't fit the
regex used to convert all the others because the first '|' was on a
separate line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41098 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-15 13:42:36 +00:00
Dan Gohman
28beeeac4d Convert tests using "| wc -l | grep ..." to use the count script.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41097 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-15 13:36:28 +00:00
Evan Cheng
3b1d3068c3 New test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41087 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-14 23:34:50 +00:00
Evan Cheng
f65f11c384 Test case for PR1596.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41085 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-14 23:21:10 +00:00
Chris Lattner
b350b76a32 tcl seems to hate |& for some reason.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41073 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-14 16:19:35 +00:00
Chris Lattner
81e6fbe706 switch this to use fastcc to avoid fpstack traffic on x86-32. Switch to
using the count script instead of wc -l


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41072 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-14 16:14:10 +00:00
Evan Cheng
606b91de6c Update test case. A spill should now be deleted.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41070 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-14 09:16:00 +00:00
Evan Cheng
d24165aa71 Spiller reuse test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41068 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-14 05:51:03 +00:00
Evan Cheng
1f808011e0 Now capable of rematerializing coalesced live intervals.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41061 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-13 23:54:16 +00:00
Dan Gohman
badb2d23d1 When x86 addresses matching exceeds its recursion limit, check to
see if the base register is already occupied before assuming it can be
used. This fixes bogus code generation in the accompanying testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41049 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-13 20:03:06 +00:00
Chris Lattner
a45d9a15ba Fix PR1607
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41048 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-13 18:42:37 +00:00
Christopher Lamb
8441157f6e Fix test so it passes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41012 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-10 22:20:57 +00:00
Christopher Lamb
c59e52108b Increase efficiency of sign_extend_inreg by using subregisters for truncation. As the README suggests sign_extend_subreg is selected to (sext(trunc)).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41010 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-10 21:48:46 +00:00
Christopher Lamb
b81337117c Add 2-addr to 3-addr promotion code that allows 32-bit LEA to be used via subregisters when 16-bit LEA is disabled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41007 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-10 21:18:25 +00:00
Dan Gohman
25ac7e8364 Fix EXTRACT_ELEMENT, EXTRACT_SUBVECTOR, and EXTRACT_VECTOR_ELT to
use an intptr ValueType instead of i32 for the index operand in
getCopyToParts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40987 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-10 14:59:38 +00:00
Chris Lattner
3038778c1e allow this to pass on ppc hosts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40846 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-05 18:48:18 +00:00
Chandler Carruth
6994040a95 This is the patch to provide clean intrinsic function overloading support in LLVM. It cleans up the intrinsic definitions and generally smooths the process for more complicated intrinsic writing. It will be used by the upcoming atomic intrinsics as well as vector and float intrinsics in the future.
This also changes the syntax for llvm.bswap, llvm.part.set, llvm.part.select, and llvm.ct* intrinsics. They are automatically upgraded by both the LLVM ASM reader and the bitcode reader. The test cases have been updated, with special tests added to ensure the automatic upgrading is supported.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40807 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-04 01:51:18 +00:00
Dan Gohman
7f55fcbc6b Fix the alignment requirements of several unpck and shuf instructions.
Generalize isPSHUFDMask and add a unary SHUFPD pattern so that SHUFPD's
memory operand alignment can be tested as well, with a fix to avoid
breaking MMX's use of isPSHUFDMask.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40756 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-02 21:17:01 +00:00
Dan Gohman
73a902b228 Mark the SSE and MMX load instructions that
X86InstrInfo::isReallyTriviallyReMaterializable knows how to handle
with the isReMaterializable flag so that it is given a chance to handle
them. Without hoisting constant-pool loads from loops this isn't very
visible, though it does keep CodeGen/X86/constant-pool-remat-0.ll from
making a copy of the constant pool on the stack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40736 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-02 14:27:55 +00:00
Evan Cheng
0a2a515c5b Fix test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40721 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-02 05:04:16 +00:00