Kalle Raiskila
457fa0b3bc
Add a "nop filler" pass to SPU.
...
Filling no-ops is done just before emitting of assembly,
when the instruction stream is final. No-ops are inserted
to align the instructions so the dual-issue of the pipeline
is utilized. This speeds up generated code with a minimum of
1% on a select set of algorithms.
This pass may be redundant if the instruction scheduler and
all subsequent passes that modify the instruction stream
(prolog+epilog inserter, register scavenger, are there others?)
are made aware of the instruction alignments.
llvm-svn: 123226
2011-01-11 09:07:54 +00:00
Eric Christopher
e86e1aecd8
Temporarily revert 123133, it's causing some regressions and I'm trying
...
to get a testcase.
llvm-svn: 123225
2011-01-11 09:02:09 +00:00
Chris Lattner
e5688368c6
update memdep when an instruction is deleted. This code isn't
...
actually reached in the testcase in PR8954, but it's safe and good
practice.
llvm-svn: 123224
2011-01-11 08:19:16 +00:00
Chris Lattner
a82a6cfe6d
when MergeBlockIntoPredecessor merges two blocks, update MemDep if it
...
is floating around in the ether.
llvm-svn: 123223
2011-01-11 08:16:49 +00:00
Chris Lattner
dc7b2160ba
Fix FoldSingleEntryPHINodes to update memdep and AA when it deletes
...
phi nodes. It is called from MergeBlockIntoPredecessor which is
called from GVN, which claims to preserve these.
I'm skeptical that this is the actual problem behind PR8954, but
this is a stab in the right direction.
llvm-svn: 123222
2011-01-11 08:13:40 +00:00
Chris Lattner
b1a9c9ed36
random cleanups
...
llvm-svn: 123221
2011-01-11 08:00:40 +00:00
Chris Lattner
feade29ab8
merge tests into one crash.ll test.
...
llvm-svn: 123220
2011-01-11 07:50:07 +00:00
Chris Lattner
5731a92f5b
remove a bogus assertion: the latch block of a loop is not
...
neccesarily an uncond branch to the header. This fixes
PR8955 (the assertion tripping).
llvm-svn: 123219
2011-01-11 07:47:59 +00:00
Chris Lattner
14bf29d7a0
the GEP faq says that only inbounds geps are guaranteed to not overflow.
...
llvm-svn: 123218
2011-01-11 06:44:41 +00:00
Jakob Stoklund Olesen
43e92a1d28
Revert r123207: "Turn on memdep's verifyRemoved() in an attempt to smoke out the cause of our gcc bootstrap miscompare."
...
It didn't.
llvm-svn: 123215
2011-01-11 04:05:39 +00:00
Michael J. Spencer
6d4a8a7b72
Support/Path: Deprecate PathV1::isDirectory and replace all uses with PathV2::is_directory.
...
llvm-svn: 123209
2011-01-11 01:21:55 +00:00
Jakob Stoklund Olesen
d8abef4798
Turn on memdep's verifyRemoved() in an attempt to smoke out the cause of our gcc bootstrap miscompare.
...
llvm-svn: 123207
2011-01-11 01:18:03 +00:00
Chandler Carruth
250dce460c
Teach constant folding to perform conversions from constant floating
...
point values to their integer representation through the SSE intrinsic
calls. This is the last part of a README.txt entry for which I have real
world examples.
llvm-svn: 123206
2011-01-11 01:07:24 +00:00
Chandler Carruth
acb82e863d
FileCheck-ize a test, and move a no-longer calling test case to another
...
file and make it actually test something...
llvm-svn: 123205
2011-01-11 01:07:20 +00:00
Owen Anderson
4479341626
Fix a random missed optimization by making InstCombine more aggressive when determining which bits are demanded by
...
a comparison against a constant.
llvm-svn: 123203
2011-01-11 00:36:45 +00:00
Eric Christopher
5a4d64216f
Move ExpandAtomic into the integer expansion routines - it's only used there.
...
llvm-svn: 123202
2011-01-11 00:36:08 +00:00
Eric Christopher
68263285d5
Even if we don't have 7 bytes of stack space we may need to save and
...
restore the stack pointer from the frame pointer on thumbv6.
Fixes rdar://8819685
llvm-svn: 123196
2011-01-11 00:16:04 +00:00
Eric Christopher
934fa0fca0
Expand on the safeness of restoring the sp from the fp a bit more.
...
llvm-svn: 123193
2011-01-10 23:10:59 +00:00
Dale Johannesen
cd78621861
Fix PR 8916 (qv for analysis), at least the immediate problem.
...
There's an inherent tension in DAGCombine between assuming
that things will be put in canonical form, and the Depth
mechanism that disables transformations when recursion gets
too deep. It would not surprise me if there's a lot of little
bugs like this one waiting to be discovered. The mechanism
seems fragile and I'd suggest looking at it from a design viewpoint.
llvm-svn: 123191
2011-01-10 21:53:07 +00:00
Chris Lattner
c46188944e
+0.0 vs -0.0 differences can be handled by looking at the user of the
...
operation in some cases.
llvm-svn: 123190
2011-01-10 21:01:17 +00:00
Daniel Dunbar
0e9ece99bb
McARM: Flush out hard coded known non-predicated mnemonic list.
...
llvm-svn: 123189
2011-01-10 21:01:03 +00:00
Daniel Dunbar
3567bd2bcb
McARM: Mark some T2 ...s instructions as codegen only, they aren't real
...
instructions but are restricted pseudo forms.
llvm-svn: 123177
2011-01-10 15:26:39 +00:00
Daniel Dunbar
acb825eae8
ARM/MC: Mark several '...S' instructions as codegen only, they aren't real
...
instructions but are restricted pseudo forms.
llvm-svn: 123176
2011-01-10 15:26:35 +00:00
Daniel Dunbar
9e911c13c5
MC/ARM/AsmParser: Minor nitty fixes.
...
llvm-svn: 123175
2011-01-10 15:26:21 +00:00
Daniel Dunbar
719295c2e2
MC/AsmMatcher: Fix indirect 80-col viola.
...
llvm-svn: 123174
2011-01-10 15:26:11 +00:00
Anton Korobeynikov
e74f0595f3
Fix merge fallout
...
llvm-svn: 123172
2011-01-10 12:56:18 +00:00
Anton Korobeynikov
abd9a868df
Update CMake stuff
...
llvm-svn: 123171
2011-01-10 12:39:23 +00:00
Anton Korobeynikov
cf5967630b
Rename TargetFrameInfo into TargetFrameLowering. Also, put couple of FIXMEs and fixes here and there.
...
llvm-svn: 123170
2011-01-10 12:39:04 +00:00
Daniel Dunbar
d17b4ac127
MC/ARM/AsmParser: Split out SplitMnemonicAndCC().
...
llvm-svn: 123169
2011-01-10 12:24:52 +00:00
Chandler Carruth
5ac8ca39c0
Cleanup some of the constant folding code to consistently test intrinsic
...
IDs when available rather than using a mixture of IDs and textual name
comparisons.
llvm-svn: 123165
2011-01-10 09:02:58 +00:00
Chris Lattner
0e49a35bd2
fit in 80 cols and use MBB::isSuccessor instead of a hand
...
rolled std::find.
llvm-svn: 123164
2011-01-10 07:51:31 +00:00
Chandler Carruth
772e26df36
Teach instcombine about the rest of the SSE and SSE2 conversion
...
intrinsics element dependencies. Reviewed by Nick.
llvm-svn: 123161
2011-01-10 07:19:37 +00:00
Jakob Stoklund Olesen
32f1783ca1
Simplify a bunch of isVirtualRegister() and isPhysicalRegister() logic.
...
These functions not longer assert when passed 0, but simply return false instead.
No functional change intended.
llvm-svn: 123155
2011-01-10 02:58:51 +00:00
Chandler Carruth
7f854ac9a9
Fold two related tests into the newly FileCheck-ized test, migrating
...
them to FileCheck as well.
llvm-svn: 123154
2011-01-10 02:53:58 +00:00
Chandler Carruth
7c332e5abd
Clean up and FileCheck-ize a test.
...
llvm-svn: 123153
2011-01-10 02:53:54 +00:00
Michael J. Spencer
bc362451c7
Fix Whitespace.
...
llvm-svn: 123152
2011-01-10 02:34:40 +00:00
Michael J. Spencer
917b043a16
Support/Path: Deprecate PathV1::exists and replace all uses with PathV2::fs::exists.
...
llvm-svn: 123151
2011-01-10 02:34:23 +00:00
Chris Lattner
1404348022
another random stab in the dark trying to fix llvm-gcc-i386-linux-selfhost
...
llvm-svn: 123149
2011-01-10 02:34:11 +00:00
Chris Lattner
867dbe1329
fix typo
...
llvm-svn: 123148
2011-01-10 02:33:34 +00:00
Chris Lattner
b5562212e2
another (more) aggressive attempt to bring llvm-gcc-i386-linux-selfhost
...
back to life.
llvm-svn: 123146
2011-01-10 00:47:34 +00:00
Chris Lattner
2bd48ecd43
expand on a note
...
llvm-svn: 123145
2011-01-10 00:33:01 +00:00
Chris Lattner
e8e9ec58bf
temporarily disable memset formation from memsets in an effort to restore buildbot stability.
...
llvm-svn: 123144
2011-01-09 23:52:48 +00:00
Chris Lattner
749f1eff13
add a testcase I missed in previous commit.
...
llvm-svn: 123143
2011-01-09 23:52:31 +00:00
Chris Lattner
7926b7035f
typo
...
llvm-svn: 123142
2011-01-09 23:48:41 +00:00
Chris Lattner
fc6d425076
xref a PR #
...
llvm-svn: 123141
2011-01-09 23:42:22 +00:00
Jakob Stoklund Olesen
98b20886ef
Remove TargetRegisterInfo::NoRegister.
...
Fix the TargetRegisterInfo::NoRegister places where someone preferred
typing 'TargetRegisterInfo::NoRegister' instead of typing '0'.
Note that TableGen is already emitting xx::NoRegister in xxGenRegisterNames.inc.
llvm-svn: 123140
2011-01-09 23:20:48 +00:00
Chris Lattner
0643d32b61
add a fixme: ir isn't expressive enough.
...
llvm-svn: 123139
2011-01-09 23:02:10 +00:00
Chris Lattner
c8a9f4ca2b
Step #4 in improving trip count analysis: HowFarToZero can analyze
...
NUW AddRec's much more aggressively. We now get a trip count
for @test2 in nsw.ll
llvm-svn: 123138
2011-01-09 22:58:47 +00:00
Jakob Stoklund Olesen
e41db14dbf
Change virtual register numbering to make more space for physical registers.
...
The numbering plan is now:
0 NoRegister.
[1;2^30) Physical registers.
[2^30;2^31) Stack slots.
[2^31;2^32) Virtual registers. (With -1u and -2u used by DenseMapInfo.)
Each segment is filled from the left, so any mistaken interpretation should
quickly cause crashes.
FirstVirtualRegister has been removed. TargetRegisterInfo provides predicates
conversion functions that should be used instead of interpreting register
numbers manually.
It is now legal to pass NoRegister to isPhysicalRegister() and
isVirtualRegister(). The result is false in both cases.
It is quite rare to represent stack slots in this way, so isPhysicalRegister()
and isVirtualRegister() require that isStackSlot() be checked first if it can
possibly return true. This allows a very fast implementation of the common
predicates.
llvm-svn: 123137
2011-01-09 22:42:48 +00:00
Chris Lattner
09cfec2226
rearrange some code, no functionality change.
...
llvm-svn: 123136
2011-01-09 22:39:48 +00:00