Chris Lattner
cfa597569d
Implement PR1822
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44318 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-25 21:27:53 +00:00
Duncan Sands
827cde1c83
Fix PR1816. If a bitcast of a function only exists because of a
...
trivial difference in function attributes, allow calls to it to
be converted to direct calls. Based on a patch by Török Edwin.
While there, move the various lists of mutually incompatible
parameters etc out of the verifier and into ParameterAttributes.h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44315 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-25 14:10:56 +00:00
Chris Lattner
8a594489bf
Fix a long standing deficiency in the X86 backend: we would
...
sometimes emit "zero" and "all one" vectors multiple times,
for example:
_test2:
pcmpeqd %mm0, %mm0
movq %mm0, _M1
pcmpeqd %mm0, %mm0
movq %mm0, _M2
ret
instead of:
_test2:
pcmpeqd %mm0, %mm0
movq %mm0, _M1
movq %mm0, _M2
ret
This patch fixes this by always arranging for zero/one vectors
to be defined as v4i32 or v2i32 (SSE/MMX) instead of letting them be
any random type. This ensures they get trivially CSE'd on the dag.
This fix is also important for LegalizeDAGTypes, as it gets unhappy
when the x86 backend wants BUILD_VECTOR(i64 0) to be legal even when
'i64' isn't legal.
This patch makes the following changes:
1) X86TargetLowering::LowerBUILD_VECTOR now lowers 0/1 vectors into
their canonical types.
2) The now-dead patterns are removed from the SSE/MMX .td files.
3) All the patterns in the .td file that referred to immAllOnesV or
immAllZerosV in the wrong form now use *_bc to match them with a
bitcast wrapped around them.
4) X86DAGToDAGISel::SelectScalarSSELoad is generalized to handle
bitcast'd zero vectors, which simplifies the code actually.
5) getShuffleVectorZeroOrUndef is updated to generate a shuffle that
is legal, instead of generating one that is illegal and expecting
a later legalize pass to clean it up.
6) isZeroShuffle is generalized to handle bitcast of zeros.
7) several other minor tweaks.
This patch is definite goodness, but has the potential to cause random
code quality regressions. Please be on the lookout for these and let
me know if they happen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44310 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-25 00:24:49 +00:00
Chris Lattner
9a5bdad0cc
upgrade this test
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44298 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-24 05:39:29 +00:00
Chris Lattner
9e513acd31
Fix PR1816, by correcting the broken definition of APInt::countTrailingZeros.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44296 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-23 22:42:31 +00:00
Duncan Sands
e4dc717585
Ding dong, the DoesntAccessMemoryFns and
...
OnlyReadsMemoryFns tables are dead! We
get more, and more accurate, information
from gcc via the readnone and readonly
function attributes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44288 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-23 19:30:27 +00:00
Chris Lattner
42b5e08e71
Fix a bug where we'd try to find a scev value for a bitcast operand,
...
even though the bitcast operand did not have integer type. This fixes
PR1814.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44286 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-23 08:46:22 +00:00
Chris Lattner
eec8b9a7d6
Fix PR1817.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44284 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-22 23:47:13 +00:00
Duncan Sands
73d4bb6676
Turn invokes of nounwind functions into ordinary calls.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44280 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-22 22:24:59 +00:00
Duncan Sands
920653d41e
Teach alias analysis about readnone/readonly functions.
...
Based on a patch by Török Edwin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44279 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-22 21:43:27 +00:00
Duncan Sands
5ef7be79e0
Readonly/readnone functions are allowed to throw
...
exceptions, so don't turn invokes of them into
calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44278 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-22 21:40:06 +00:00
Nick Lewycky
4ac0e8da4a
Create nodes for inline asm so that we don't crash looking for the node later.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44267 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-22 03:07:37 +00:00
Duncan Sands
baccd5872e
Fix a bug in which node A is replaced by node B, but later
...
node A gets back into the DAG again because it was hiding in
one of the node maps: make sure that node replacement happens
in those maps too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44263 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-21 16:43:19 +00:00
Nick Lewycky
cf96db2c1d
Be more careful when transforming | to +. Patch from Wojciech Matyjewicz.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44248 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-20 08:24:44 +00:00
Chris Lattner
cec5f3003f
Testcase for PR1811
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44244 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-19 21:43:22 +00:00
Dan Gohman
089617d9e3
Add support in SplitVectorOp for remainder operators.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44233 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-19 15:15:03 +00:00
Chris Lattner
ef6c875dfa
fix bogus test that the more strict lexer is finding.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44216 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-18 18:26:45 +00:00
Nate Begeman
b348d18caf
Add support for vectors to int <-> float casts.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44204 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-17 03:58:34 +00:00
Evan Cheng
6542481a6d
Typo.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44196 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-16 23:55:08 +00:00
Dale Johannesen
d81ae56fa2
Testcase from PR 1508 (although its's somewhat
...
orthogonal to the main problem there)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44194 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-16 23:16:35 +00:00
Chris Lattner
a7d1ab0ab3
Fix PR1800 by correcting mistaken logic.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44188 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-16 06:04:17 +00:00
Anton Korobeynikov
4e1a0e386c
Reverted r44163 per request
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44177 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-15 18:33:16 +00:00
Evan Cheng
5d446265c7
Fix a thinko in post-allocation coalescer.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44166 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-15 08:13:29 +00:00
Nick Lewycky
65e2da3b4d
Fix handling of overflow in loop calculation by adding new UDiv SCEV. This SCEV
...
is disabled in the sense that it will refuse to create one from a UDiv
instruction, until the code is better tested.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44163 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-15 06:30:50 +00:00
Duncan Sands
7e9ab25a85
Un XFAIL these tests, now that Bill has backported
...
the fix from 4.2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44115 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-14 13:40:53 +00:00
Anton Korobeynikov
9de1934099
Fix PIC jump table codegen on x86-32/linux. In fact, such thing should be applied
...
to all targets uses GOT-relative offsets for PIC (Alpha?)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44108 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-14 09:18:41 +00:00
Duncan Sands
f9572a4c2b
XFAIL these tests until the fix gets backported
...
from llvm-gcc-4.2 to 4.0.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44103 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-14 07:42:50 +00:00
Chris Lattner
1b12d8855d
Implement PR1796 and Transforms/SimplifyCFG/noreturn-call.ll
...
by inserting unreachable after no-return calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44099 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-14 06:19:25 +00:00
Chris Lattner
59ab338882
upgrade test
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44067 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-13 21:42:48 +00:00
Chris Lattner
b42c8f7101
Implement PR1786 by iterating between dead cycle elimination
...
and simplifycfg in the rare cases when it is needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44044 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-13 07:32:38 +00:00
Arnold Schwaighofer
38ada868f2
Update tailcall code to include inline attribute operand for memcpy.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43978 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-10 10:48:01 +00:00
Evan Cheng
9858c348d7
Fix tests.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43961 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-09 20:46:00 +00:00
Chris Lattner
7b52fe7272
Tighten up a check for folding away loads from (newly constant) globals. This
...
fixes a crash on Transforms/GlobalOpt/2007-11-09-GEP-GEP-Crash.ll and
rdar://5585488.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43949 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-09 17:33:02 +00:00
Duncan Sands
27b12384e6
Thanks to the XTARGET line, this test should still
...
be run on darwin, but I have no way of checking...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43945 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-09 13:50:25 +00:00
Duncan Sands
38c576c56e
Check that the first and third characters, s and u,
...
are accessed with an alignment of 2 not 1.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43932 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-09 07:47:29 +00:00
Duncan Sands
506f9089a4
Check that accesses to the second short, t, have
...
an alignment of 2 rather than 4.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43931 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-09 07:46:02 +00:00
Devang Patel
dbaf378350
Run this test only on darwin.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43912 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08 22:26:46 +00:00
Andrew Lenharth
b410df995c
Better check
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43897 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08 18:45:15 +00:00
Andrew Lenharth
ab9338eb9f
Fix PR1780
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43893 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08 17:39:28 +00:00
Lauro Ramos Venancio
e0cb36b9fb
[ARM] Implement __builtin_thread_pointer.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43892 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08 17:20:05 +00:00
Evan Cheng
4471194d69
If both parts of smul_lohi, etc. are used, don't simplify. If only one part is used, try simplify it.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43888 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08 09:25:29 +00:00
Bill Wendling
033903c37b
Add testcase
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43839 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-07 19:36:26 +00:00
Tanya Lattner
a57506eea4
Implement the XTARGET feature for PR1778
...
This will mark a test as PASS for all targets specified. It will override whatever is in XFAIL.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43788 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-06 22:32:17 +00:00
Chris Lattner
cf5008a792
Implement PR1777 by detecting dependent phis that
...
all compute the same value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43777 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-06 21:52:06 +00:00
Evan Cheng
1fd15ba961
Add pseudo dependency to force two-address instruction to be scheduled after
...
other uses. There was a overly restricted check that prevented some obvious
cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43762 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-06 08:44:59 +00:00
Chris Lattner
9907cb12ae
Fix PR1774 and BasicAA/2007-11-05-SizeCrash.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43756 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-06 05:58:42 +00:00
Dan Gohman
80176319f3
Add support for vector remainder operations.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43744 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-05 23:35:22 +00:00
Dan Gohman
cff550995b
Fix an abort in instcombine when folding creates a vector rem instruction.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43743 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-05 23:16:33 +00:00
Dale Johannesen
eb57ea7ea2
Make labels work in asm blocks; allow labels as
...
parameters. Rename ValueRefList to ParamList
in AsmParser, since its only use is for parameters.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43734 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-05 21:20:28 +00:00
Devang Patel
5d01aa484f
If a value is incoming from outside the loop then the value does not need remapping and the value is never tracked through LastValueMap.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43728 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-05 19:32:30 +00:00
Lauro Ramos Venancio
8699a97a2e
[ARM] Fix code generation for:
...
static __thread struct {
int a;
int b;
} teste = {0, 0};
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43722 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-05 18:33:37 +00:00
Evan Cheng
5031fd2d32
Skip over deleted val#'s.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43700 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-05 06:46:45 +00:00
Evan Cheng
5942efb0e5
Handle cases where a register and one of its super-register are both marked as
...
defined on the same instruction. This fixes PR1767.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43699 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-05 03:11:55 +00:00
Evan Cheng
801e5a98bf
Fix test case. Chris didn't do make check. :-)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43698 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-05 03:04:26 +00:00
Evan Cheng
8dec727c1f
Doh. PR1187 -> PR1766.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43693 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-05 01:00:44 +00:00
Evan Cheng
5f5f3b6333
Fix PR1187.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43692 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-05 00:59:10 +00:00
Chris Lattner
fe6575c2bf
Fix PR1761 by not printing (rip) suffix when in -static mode.
...
Evan, please review this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43680 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-04 19:23:28 +00:00
Duncan Sands
3cb3650a27
Change uses of getTypeSize to getABITypeSize, getTypeStoreSize
...
or getTypeSizeInBits as appropriate in ScalarReplAggregates.
The right change to make was not always obvious, so it would
be good to have an sroa guru review this. While there I noticed
some bugs, and fixed them: (1) arrays of x86 long double have
holes due to alignment padding, but this wasn't being spotted
by HasStructPadding (renamed to HasPadding). The same goes
for arrays of oddly sized ints. Vectors also suffer from this,
in fact the problem for vectors is much worse because basic
vector assumptions seem to be broken by vectors of type with
alignment padding. I didn't try to fix any of these vector
problems. (2) The code for extracting smaller integers from
larger ones (in the "int union" case) was wrong on big-endian
machines for integers with size not a multiple of 8, like i1.
Probably this is impossible to hit via llvm-gcc, but I fixed
it anyway while there and added a testcase. I also got rid of
some trailing whitespace and changed a function name which
had an obvious typo in it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43672 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-04 14:43:57 +00:00
Chris Lattner
03e6c7091e
Fix PR1763 by allowing the 'q' constraint to work with 64-bit
...
regs on x86-64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43669 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-04 06:51:12 +00:00
Evan Cheng
c92da3882e
There are times when the coalescer would not coalesce away a copy but the copy
...
can be eliminated by the allocator is the destination and source targets the
same register. The most common case is when the source and destination registers
are in different class. For example, on x86 mov32to32_ targets GR32_ which
contains a subset of the registers in GR32.
The allocator can do 2 things:
1. Set the preferred allocation for the destination of a copy to that of its source.
2. After allocation is done, change the allocation of a copy destination (if
legal) so the copy can be eliminated.
This eliminates 443 extra moves from 403.gcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43662 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-03 07:20:12 +00:00
Evan Cheng
deb36bd9d4
Add run line.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43645 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-02 17:36:58 +00:00
Evan Cheng
7277a7d031
One more extract_subreg coalescing bug.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43644 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-02 17:35:08 +00:00
Evan Cheng
9df7dc52e8
Missing a getNumOperands check.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43630 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-02 01:26:22 +00:00
Owen Anderson
7ebba512c3
Fix test/Transforms/DeadStoreElimination/PartialStore.ll, which had been
...
silently failing because of an incorrect run line for some time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43605 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-01 05:29:16 +00:00
Dale Johannesen
df17df864f
Test that expand_vector_elt(v2i64) works in 32-bit mode.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43598 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-01 02:38:24 +00:00
Chris Lattner
e41dcdc964
Fix InstCombine/2007-10-31-StringCrash.ll by removing an obvious
...
(in hindsight) infinite recursion. Simplify the code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43597 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-01 02:30:35 +00:00
Chris Lattner
74e012afd3
Fix InstCombine/2007-10-31-RangeCrash.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43596 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-01 02:18:41 +00:00
Devang Patel
e45bb9ad5e
New test.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43527 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-30 23:07:47 +00:00
Evan Cheng
8392772727
It's not safe to tell SplitCriticalEdge to merge identical edges. It may delete the phi instruction that's being processed.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43524 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-30 22:27:26 +00:00
Dan Gohman
d61de35564
Add support for folding binary operators with vector zero operands.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43510 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-30 19:00:49 +00:00
Evan Cheng
af62c09437
- Bug fixes.
...
- Allow icmp rewrite using an iv / stride of a smaller integer type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43480 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-29 22:07:18 +00:00
Dan Gohman
090b38a0da
Fix a DAGCombiner abort on a bitcast from a scalar to a vector.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43470 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-29 20:44:42 +00:00
Evan Cheng
3c3ddb3a85
Enable more fold (sext (load x)) -> (sext (truncate (sextload x)))
...
transformation. Previously, it's restricted by ensuring the number of load uses
is one. Now the restriction is loosened up by allowing setcc uses to be
"extended" (e.g. setcc x, c, eq -> setcc sext(x), sext(c), eq).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43465 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-29 19:58:20 +00:00
Chris Lattner
c20b0fbfcd
update testcase
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43452 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-29 17:06:35 +00:00
Chris Lattner
cee291c505
Model stacksave and stackrestore as both writing memory, since we
...
don't model their dependences on allocas correctly. This fixes
PR1745.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43442 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-29 05:47:52 +00:00
Chris Lattner
fb7f343615
Add support for the x86-64 'q' regigster modifier, and add support for the
...
b/h/w/k/q inline asm memory modifiers, which are just ignored. This fixes
PR1748 and CodeGen/X86/2007-10-28-inlineasm-q-modifier.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43430 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-29 03:09:07 +00:00
Chris Lattner
b361ec3197
Fix PR1749 and InstCombine/2007-10-28-EmptyField.ll by handling
...
zero-length fields better.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43427 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-29 02:40:02 +00:00
Chris Lattner
3cb63ddd51
Fix PR1752 and LoopSimplify/2007-10-28-InvokeCrash.ll: terminators
...
can have uses too. Wouldn't it be nice if invoke didn't exist? :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43426 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-29 02:30:37 +00:00
Bill Wendling
318d3ae397
Test to make sure that if we have an unaligned memcpy, it will still compile.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43412 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-26 23:43:35 +00:00
Bill Wendling
61297f960e
On second thought. Remove this as it should never be generated in the first
...
place.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43400 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-26 20:34:37 +00:00
Bill Wendling
984e986929
- Remove the hacky code that forces a memcpy. Alignment is taken care of in the
...
FE.
- Explicitly pass in the alignment of the load & store.
- XFAIL 2007-10-23-UnalignedMemcpy.ll because llc has a bug that crashes on
unaligned pointers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43398 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-26 20:24:42 +00:00
Evan Cheng
2bd122c4d9
Loosen up iv reuse to allow reuse of the same stride but a larger type when truncating from the larger type to smaller type is free.
...
e.g.
Turns this loop:
LBB1_1: # entry.bb_crit_edge
xorl %ecx, %ecx
xorw %dx, %dx
movw %dx, %si
LBB1_2: # bb
movl L_X$non_lazy_ptr, %edi
movw %si, (%edi)
movl L_Y$non_lazy_ptr, %edi
movw %dx, (%edi)
addw $4, %dx
incw %si
incl %ecx
cmpl %eax, %ecx
jne LBB1_2 # bb
into
LBB1_1: # entry.bb_crit_edge
xorl %ecx, %ecx
xorw %dx, %dx
LBB1_2: # bb
movl L_X$non_lazy_ptr, %esi
movw %cx, (%esi)
movl L_Y$non_lazy_ptr, %esi
movw %dx, (%esi)
addw $4, %dx
incl %ecx
cmpl %eax, %ecx
jne LBB1_2 # bb
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43375 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-26 01:56:11 +00:00
Evan Cheng
cdf43b1fad
If a loop termination compare instruction is the only use of its stride,
...
and the compaison is against a constant value, try eliminate the stride
by moving the compare instruction to another stride and change its
constant operand accordingly. e.g.
loop:
...
v1 = v1 + 3
v2 = v2 + 1
if (v2 < 10) goto loop
=>
loop:
...
v1 = v1 + 3
if (v1 < 30) goto loop
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43336 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-25 09:11:16 +00:00
Owen Anderson
f92ff03f71
Fix for PR1741.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43326 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-25 02:36:18 +00:00
Dale Johannesen
691645e90f
Testcase for PR 1397.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43323 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-25 00:50:14 +00:00
Dale Johannesen
0bd5fcf49f
This was failing on Darwin, which defaults to PIC;
...
no lea was generated. I think this follows the intent.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43312 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-24 20:58:14 +00:00
Chris Lattner
99c65745a2
Implement a couple of foldings for ordered and unordered comparisons,
...
implementing cases related to PR1738.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43289 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-24 05:38:08 +00:00
Bill Wendling
8b1c68cee4
If there's an unaligned memcpy to/from the stack, don't lower it. Just call the
...
memcpy library function instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43270 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-23 23:32:40 +00:00
Chris Lattner
a91547790b
new testcase
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43252 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-23 18:07:23 +00:00
Chris Lattner
ee19b866c3
llvm/test programs should not be execution programs. This
...
will hopefully fix Gabor's Sparc problem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43251 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-23 17:56:04 +00:00
Evan Cheng
152b7e1874
Temporary solution: added a different set of BCTRL_Macho / BCTRL_ELF with right callee-saved defs set for ppc64.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43248 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-23 06:42:42 +00:00
Evan Cheng
4102eb57bb
Fix memcpy lowering when addresses are 4-byte aligned but size is not multiple of 4.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43234 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 22:11:27 +00:00
Dan Gohman
02e4fa7d5f
Strength reduction improvements.
...
- Avoid attempting stride-reuse in the case that there are users that
aren't addresses. In that case, there will be places where the
multiplications won't be folded away, so it's better to try to
strength-reduce them.
- Several SSE intrinsics have operands that strength-reduction can
treat as addresses. The previous item makes this more visible, as
any non-address use of an IV can inhibit stride-reuse.
- Make ValidStride aware of whether there's likely to be a base
register in the address computation. This prevents it from thinking
that things like stride 9 are valid on x86 when the base register is
already occupied.
Also, XFAIL the 2007-08-10-LEA16Use32.ll test; the new logic to avoid
stride-reuse elimintes the LEA in the loop, so the test is no longer
testing what it was intended to test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43231 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 20:40:42 +00:00
Dan Gohman
8368805e25
Fix the folding of multiplication into addresses on x86, which was broken
...
by the recent {U,S}MUL_LOHI changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43230 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 20:22:24 +00:00
Evan Cheng
3311876c3c
Use ptr type in the immediate field of a BxA instruction so we don't end up selecting 32-bit call instruction for ppc64.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43228 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 19:46:19 +00:00
Evan Cheng
40eaa99fa9
New test case.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43193 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-19 22:05:00 +00:00
Bill Wendling
80629c85f1
Don't branch fold inline asm statements.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43191 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-19 21:09:55 +00:00
Bill Wendling
4f78af8d77
Removed "-arch i386" by popular demand...
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43186 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-19 18:49:16 +00:00
Bill Wendling
22058955e8
Now with RUN line!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43185 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-19 18:40:53 +00:00
Bill Wendling
8c0247d005
Remove the Foundation.h file because not everyone has that.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43184 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-19 18:36:04 +00:00