Evan Cheng
a5f3ec9e03
Fix kill info for split intervals.
...
llvm-svn: 44609
2007-12-05 08:16:32 +00:00
Chris Lattner
a43f6b4a08
more scalarization
...
llvm-svn: 44608
2007-12-05 07:45:02 +00:00
Chris Lattner
e1b35fb035
scalarize vector binops
...
llvm-svn: 44607
2007-12-05 07:36:58 +00:00
Evan Cheng
1dc8e83707
- Mark last use of a split interval as kill instead of letting spiller track it.
...
This allows an important optimization to be re-enabled.
- If all uses / defs of a split interval can be folded, give the interval a
low spill weight so it would not be picked in case spilling is needed (avoid
pushing other intervals in the same BB to be spilled).
llvm-svn: 44601
2007-12-05 03:22:34 +00:00
Evan Cheng
8464a0bf00
Add a argument to storeRegToStackSlot and storeRegToAddr to specify whether
...
the stored register is killed.
llvm-svn: 44600
2007-12-05 03:14:33 +00:00
Scott Michel
871b3a4fd4
More stuff for CellSPU -- this should be enough to get an error-free
...
compilation (no files missing). Test cases remain to be checked in.
llvm-svn: 44598
2007-12-05 02:01:41 +00:00
Scott Michel
8a2cb11b05
Updated source file headers to llvm coding standard.
...
llvm-svn: 44597
2007-12-05 01:40:25 +00:00
Scott Michel
026ace10b2
Two missing files.
...
llvm-svn: 44596
2007-12-05 01:31:18 +00:00
Scott Michel
191775d31f
Main CellSPU backend files checked in. Intrinsics and autoconf files
...
remain.
llvm-svn: 44595
2007-12-05 01:24:05 +00:00
Dale Johannesen
15712dc45a
Handle 0 correctly in string->APFloat conversion.
...
llvm-svn: 44594
2007-12-05 01:10:19 +00:00
Evan Cheng
a8e7a09fef
Remove a unsafe optimization. This fixes 401.bzip2.
...
llvm-svn: 44587
2007-12-04 23:57:55 +00:00
Scott Michel
512cb025cc
More files in the CellSPU drop...
...
llvm-svn: 44584
2007-12-04 22:35:58 +00:00
Scott Michel
774da2e74c
More of the Cell SPU code drop from "Team Aerospace".
...
llvm-svn: 44582
2007-12-04 22:23:35 +00:00
Evan Cheng
63d60199aa
Spiller unfold optimization bug: do not clobber a reusable stack slot value unless it can be modified.
...
llvm-svn: 44575
2007-12-04 19:19:45 +00:00
Chris Lattner
914befbc8a
Implement framework for scalarizing node results. This is sufficient
...
to codegen this:
define float @test_extract_elt(<1 x float> * %P) {
%p = load <1 x float>* %P
%R = extractelement <1 x float> %p, i32 0
ret float %R
}
llvm-svn: 44570
2007-12-04 07:48:46 +00:00
Chris Lattner
eead86bbc5
start providing framework for scalarizing vectors.
...
llvm-svn: 44569
2007-12-04 07:29:51 +00:00
Evan Cheng
ffc584dd21
Discard split intervals made empty due to folding.
...
llvm-svn: 44565
2007-12-04 00:32:23 +00:00
Scott Michel
3996f647d2
More CellSPU files... more to follow.
...
llvm-svn: 44559
2007-12-03 23:14:43 +00:00
Scott Michel
c312b999e6
Makefile fragment for CellSPU.
...
llvm-svn: 44558
2007-12-03 23:12:49 +00:00
Scott Michel
34987128e0
First commit to CellSPU. More to follow
...
llvm-svn: 44557
2007-12-03 23:09:49 +00:00
Evan Cheng
0b5abc5fcb
Bug fixes.
...
llvm-svn: 44549
2007-12-03 21:31:55 +00:00
Anton Korobeynikov
75a3208bb0
Regenerate
...
llvm-svn: 44546
2007-12-03 21:01:29 +00:00
Anton Korobeynikov
dcec56301a
Fix fallout from my last patch: don't reject varargs functions :)
...
llvm-svn: 44545
2007-12-03 21:00:45 +00:00
Duncan Sands
1e2e4972ff
Rather than having special rules like "intrinsics cannot
...
throw exceptions", just mark intrinsics with the nounwind
attribute. Likewise, mark intrinsics as readnone/readonly
and get rid of special aliasing logic (which didn't use
anything more than this anyway).
llvm-svn: 44544
2007-12-03 20:06:50 +00:00
Chris Lattner
0c41f32943
update file comment.
...
llvm-svn: 44543
2007-12-03 19:43:18 +00:00
Anton Korobeynikov
3f14aef8e9
Regenerate
...
llvm-svn: 44541
2007-12-03 19:17:47 +00:00
Devang Patel
c47f68e747
If ExitValue operand is also defined in Loop header then
...
insert new ExitValue after this operand definition.
This fixes PR1828.
llvm-svn: 44539
2007-12-03 19:17:21 +00:00
Anton Korobeynikov
a19d61c50e
More sanity checks for function types.
...
Thanks goes to PyPy folks for generating broken stuff :)
llvm-svn: 44538
2007-12-03 19:16:54 +00:00
Gordon Henriksen
8ef652160a
Applying Anton's binmode fix to the other ofstream too.
...
llvm-svn: 44535
2007-12-03 14:50:37 +00:00
Anton Korobeynikov
2e3b17227f
Sorry, typo :)
...
llvm-svn: 44534
2007-12-03 14:35:57 +00:00
Anton Korobeynikov
8c54cc8456
Open output file correctly. This is extremely important for
...
windows-based hosts, where files are opened in text mode by default.
llvm-svn: 44533
2007-12-03 14:28:26 +00:00
Evan Cheng
2f539edfe6
Typo
...
llvm-svn: 44532
2007-12-03 10:00:00 +00:00
Evan Cheng
df066bc833
Update kill info for uses of split intervals.
...
llvm-svn: 44531
2007-12-03 09:58:48 +00:00
Anton Korobeynikov
ad4a61ed0b
Provide hook for _alloca to make JITing on Cygwin slightly happier :)
...
llvm-svn: 44528
2007-12-03 05:30:41 +00:00
Evan Cheng
58b387dfb0
Remove redundant foldMemoryOperand variants and other code clean up.
...
llvm-svn: 44517
2007-12-02 08:30:39 +00:00
Duncan Sands
14f11d6836
Integrate the readonly/readnone logic more deeply
...
into alias analysis. This meant updating the API
which now has versions of the getModRefBehavior,
doesNotAccessMemory and onlyReadsMemory methods
which take a callsite parameter. These should be
used unless the callsite is not known, since in
general they can do a better job than the versions
that take a function. Also, users should no longer
call the version of getModRefBehavior that takes
both a function and a callsite. To reduce the
chance of misuse it is now protected.
llvm-svn: 44487
2007-12-01 07:51:45 +00:00
Evan Cheng
7b13aa1c75
Fix a bug where splitting cause some unnecessary spilling.
...
llvm-svn: 44482
2007-12-01 04:42:39 +00:00
Evan Cheng
79e8b92dc3
Allow some reloads to be folded in multi-use cases. Specifically testl r, r -> cmpl [mem], 0.
...
llvm-svn: 44479
2007-12-01 02:07:52 +00:00
Ted Kremenek
74fcbb87af
Fixed subtle bug in Deserializer::JumpTo when jumping when the block-nesting
...
information matching did not exactly match the underlying stream's scoping
information.
llvm-svn: 44470
2007-11-30 22:45:05 +00:00
Evan Cheng
90c548af8e
Do not fold reload into an instruction with multiple uses. It issues one extra load.
...
llvm-svn: 44467
2007-11-30 21:23:43 +00:00
Chris Lattner
c75545d4a8
chain update requests properly.
...
llvm-svn: 44460
2007-11-30 18:52:58 +00:00
Duncan Sands
97ddf89236
Small optimization of parameter attribute lookup.
...
llvm-svn: 44458
2007-11-30 18:20:58 +00:00
Duncan Sands
94d751995e
Add a convenience method for modifying parameter
...
attributes. While there, I noticed that not all
attribute methods returned a pointer-to-constant,
so I fixed that.
llvm-svn: 44457
2007-11-30 18:19:18 +00:00
Duncan Sands
8d9be63cd3
Check that there are not more attributes than
...
function parameters.
llvm-svn: 44452
2007-11-30 15:52:20 +00:00
Devang Patel
47b368da69
Provide a way to update DescGlobals cache directly.
...
llvm-svn: 44446
2007-11-30 00:51:33 +00:00
Evan Cheng
9ddd80f2b9
Do not lose rematerialization info when spilling already split live intervals.
...
llvm-svn: 44443
2007-11-29 23:02:50 +00:00
Owen Anderson
3b893e1f84
Fix a miscompilation in spiff on PPC.
...
llvm-svn: 44437
2007-11-29 18:02:22 +00:00
Evan Cheng
cf224f3721
Fix a major performance issue with splitting. If there is a def (not def/use)
...
in the middle of a split basic block, create a new live interval starting at
the def. This avoid artifically extending the live interval over a number of
cycles where it is dead. e.g.
bb1:
= vr1204 (use / kill) <= new interval starts and ends here.
...
...
vr1204 = (new def) <= start a new interval here.
= vr1204 (use)
llvm-svn: 44436
2007-11-29 10:12:14 +00:00
Evan Cheng
72fe4454e6
Replace the odd kill# hack with something less fragile.
...
llvm-svn: 44434
2007-11-29 09:49:23 +00:00
Duncan Sands
19a1638e99
Small parameter attributes cleanup.
...
llvm-svn: 44433
2007-11-29 08:30:15 +00:00