Evan Cheng
905a8f4940
Change traversal order to bottom up in preparation for more aggressive if-conversion.
...
llvm-svn: 37365
2007-05-30 19:49:19 +00:00
Chris Lattner
397c4d9ef6
Fix CodeGen/PowerPC/2007-05-30-dagcombine-miscomp.ll, and PR1473.
...
llvm-svn: 37362
2007-05-30 16:30:06 +00:00
Chris Lattner
4217aa376a
new testcase for PR1473
...
llvm-svn: 37361
2007-05-30 16:29:20 +00:00
Devang Patel
9b3b35d14f
Fix typo.
...
llvm-svn: 37360
2007-05-30 15:29:37 +00:00
Duncan Sands
d9e3786d2f
Testcase for
...
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070528/050047.html
llvm-svn: 37359
2007-05-30 10:16:19 +00:00
Chris Lattner
8767920f20
Fix Transforms/ScalarRepl/2007-05-29-MemcpyPreserve.ll and the second
...
half of PR1421, by not decimating structs with holes that are the source and
destination of a memcpy.
llvm-svn: 37358
2007-05-30 06:11:23 +00:00
Chris Lattner
ed24b3b2fa
Testcase for PR1421
...
llvm-svn: 37357
2007-05-30 06:10:46 +00:00
Chris Lattner
b6506a636b
new testcase for PR1421
...
llvm-svn: 37356
2007-05-30 05:37:18 +00:00
Dale Johannesen
d14ad078c6
Changed per review comment.
...
llvm-svn: 37355
2007-05-30 00:32:01 +00:00
Dale Johannesen
a69ebdbebc
Make stable_sort in tail merging actually be stable (it never was, but didn't
...
matter until my last change). Reenable tail merging by default.
llvm-svn: 37354
2007-05-29 23:47:50 +00:00
Evan Cheng
20f7d30f92
Don't merge in tail block of a diamond if it has more than one predecessors after if-conversion.
...
llvm-svn: 37353
2007-05-29 23:37:20 +00:00
Owen Anderson
9429cd1a61
Put GVN-PRE in all the right places.
...
llvm-svn: 37352
2007-05-29 23:36:32 +00:00
Evan Cheng
19eeee41ca
For VFP2 fldm, fstm instructions, the condition code is printed after the address mode and size specifier. e.g. fstmiaseq, not fstmeqias.
...
llvm-svn: 37351
2007-05-29 23:34:19 +00:00
Owen Anderson
4b0c1859fd
Fix a typo
...
llvm-svn: 37350
2007-05-29 23:34:14 +00:00
Evan Cheng
a6e9a4ce07
For ldrb, strh, etc., the condition code is before the width specifier. e.g. streqh, not strheq.
...
llvm-svn: 37349
2007-05-29 23:32:06 +00:00
Owen Anderson
0c4230724c
Re-fix a bug, where I was now being too aggressive.
...
llvm-svn: 37348
2007-05-29 23:26:30 +00:00
Owen Anderson
4a6ec8fb57
Use proper debugging facilities so other people don't have to look at my commented-out
...
debugging lines.
llvm-svn: 37347
2007-05-29 23:15:21 +00:00
Owen Anderson
f11bdc7637
Comment debug code out that I accidentally uncommented last time.
...
llvm-svn: 37346
2007-05-29 22:43:03 +00:00
Owen Anderson
ac83a3e4ff
Add a place where I missed using the maximal set. Note that using the maximal
...
set this way is _SLOW_. Somewhere down the line, I'll look at speeding it up.
llvm-svn: 37345
2007-05-29 22:35:41 +00:00
Evan Cheng
c2237ce217
If there is an empty block between a source and its successor block, it still requires a unconditional branch.
...
llvm-svn: 37344
2007-05-29 22:31:16 +00:00
Owen Anderson
5fba6c19b2
Very first part of a GVN-PRE implementation. It currently performs a bunch of analysis, and nothing more. It is also quite slow for the moment. However,
...
it should give a sense of what's going on.
llvm-svn: 37343
2007-05-29 21:53:49 +00:00
Evan Cheng
2d91a4fd6a
Add missing const qualifiers.
...
llvm-svn: 37342
2007-05-29 18:42:18 +00:00
Evan Cheng
5983bdbb2c
Add missing const qualifiers.
...
llvm-svn: 37341
2007-05-29 18:35:22 +00:00
Nicolas Geoffray
cff3e122b0
Implementation of compilation callback in PPC ELF32
...
llvm-svn: 37340
2007-05-29 16:33:18 +00:00
Chris Lattner
a446f1b46b
more fixes to C code.
...
llvm-svn: 37339
2007-05-29 15:43:56 +00:00
Bill Wendling
2d8b9a8834
Fixed some formatting.
...
llvm-svn: 37338
2007-05-29 09:42:13 +00:00
Bill Wendling
0a303eb474
Added "llvmc" to the FAQ.
...
llvm-svn: 37337
2007-05-29 09:35:34 +00:00
Bill Wendling
2c22fcb11c
Added "doc_class" div tags to code segments.
...
llvm-svn: 37336
2007-05-29 09:24:33 +00:00
Bill Wendling
3716c5df29
Fix for PR1452. Removed "define" keyword from the C code. Added "<div
...
class="doc_code">" to code examples.
llvm-svn: 37335
2007-05-29 09:04:49 +00:00
Chris Lattner
8deaba7622
Add a new LLVMBuilder class, which makes it simpler and more uniform to
...
create large amounts of instructions by separating the insertion point
logic from the logic of what to create.
llvm-svn: 37332
2007-05-27 15:09:34 +00:00
Zhou Sheng
d7dc1ed64c
Correct the logic in LowerPartSet which cleared the bits from 0 to low-1.
...
llvm-svn: 37331
2007-05-26 03:43:13 +00:00
Chris Lattner
4698083b96
tighten up recursion depth again
...
llvm-svn: 37330
2007-05-25 02:19:06 +00:00
Devang Patel
1b63e7a4b8
Disable Tail Merging for now.
...
llvm-svn: 37329
2007-05-25 01:00:24 +00:00
Evan Cheng
13f5f7df95
Silly boog.
...
llvm-svn: 37328
2007-05-25 00:59:01 +00:00
Chris Lattner
c87f3dff51
remove contradiction owen noticed
...
llvm-svn: 37327
2007-05-24 19:13:27 +00:00
Chris Lattner
80c94a4a04
Fix PR1446 by not scalarrepl'ing giant structures.
...
llvm-svn: 37326
2007-05-24 18:43:04 +00:00
Chris Lattner
49a34fcca7
testcase for PR1446
...
llvm-svn: 37325
2007-05-24 18:42:47 +00:00
Dale Johannesen
1409b6a59b
Blocks that cond-br and uncond-br/fallthrough to same block should have
...
only one successor.
llvm-svn: 37324
2007-05-24 18:31:55 +00:00
Dale Johannesen
1af8c870c7
Fix for PR1444: do not create two successors to the same block.
...
Temporarily, this breaks CodeGen/Generic/2006-02-12-InsertLibraryCall.ll
by exposing an unrelated latent problem; working on that.
llvm-svn: 37323
2007-05-24 17:39:32 +00:00
Zhou Sheng
8ff9ff7975
Compute the correct word number.
...
llvm-svn: 37322
2007-05-24 15:03:18 +00:00
Dan Gohman
30978078bf
Minor comment cleanups.
...
llvm-svn: 37321
2007-05-24 14:36:04 +00:00
Dan Gohman
703e0f8608
Add explicit qualification for namespace MVT members.
...
llvm-svn: 37320
2007-05-24 14:33:05 +00:00
Dan Gohman
5d4bb4f230
Add cases for v2f32.
...
llvm-svn: 37319
2007-05-24 14:29:12 +00:00
Evan Cheng
a4d187b8ce
Fix a typo that caused combiner to create mal-formed pre-indexed store where value store is the same as the base pointer.
...
llvm-svn: 37318
2007-05-24 02:35:39 +00:00
Evan Cheng
b58bf97603
Add a new test case.
...
llvm-svn: 37317
2007-05-24 02:31:15 +00:00
Dale Johannesen
d750b46f8b
tail merging shrinks this code a bit. Could do more in future.
...
llvm-svn: 37316
2007-05-23 21:09:26 +00:00
Dale Johannesen
f4a77d2481
Two tail merging improvements:
...
When considering blocks with more than 2 predecessors, merge the block with
the largest number of matching insns, rather than the first block found.
Considering that 1 matching insn is enough to show a win for candidates that
already end with a branch.
llvm-svn: 37315
2007-05-23 21:07:20 +00:00
Devang Patel
d50859e87b
Add dump() routines for debugging assistance.
...
llvm-svn: 37314
2007-05-23 19:55:36 +00:00
Anton Korobeynikov
3b327826db
Mark all calls as "could throw", when exceptions are enabled. Emit necessary LP info too. This fixes PR1439
...
llvm-svn: 37311
2007-05-23 11:08:31 +00:00
Chris Lattner
6509c0673f
prevent exponential recursion in isNegatibleForFree
...
llvm-svn: 37310
2007-05-23 07:35:22 +00:00
Evan Cheng
d0e669199b
Preliminary iterative if-conversion support.
...
llvm-svn: 37309
2007-05-23 07:23:16 +00:00
Evan Cheng
1d764eca98
Hooks for predication support.
...
llvm-svn: 37308
2007-05-23 07:22:05 +00:00
Evan Cheng
c972de8c8b
Rename a parameter.
...
llvm-svn: 37307
2007-05-23 07:21:11 +00:00
Evan Cheng
1e25f56508
Add a couple of target hooks for predication.
...
llvm-svn: 37306
2007-05-23 07:19:12 +00:00
Chris Lattner
688b2807df
when merging two alias sets together, be sure to propagate the volatility of
...
the inner set. This fixes PR1435 and Transforms/LICM/2007-05-22-VolatileSink.ll
llvm-svn: 37305
2007-05-23 06:36:35 +00:00
Chris Lattner
e44b6a6aaf
new testcase for PR1435
...
llvm-svn: 37304
2007-05-23 06:35:52 +00:00
Chris Lattner
c7e60517ed
make these accessors private.
...
llvm-svn: 37302
2007-05-23 05:46:04 +00:00
Devang Patel
4d01a7b1b5
If user wants to run instcombine twice, do not block it.
...
llvm-svn: 37301
2007-05-23 05:08:52 +00:00
Chris Lattner
bee7b32ef8
final updates
...
llvm-svn: 37299
2007-05-23 04:39:32 +00:00
Chris Lattner
f79577d314
fix a miscompilation when passing a float through varargs
...
llvm-svn: 37297
2007-05-23 01:17:04 +00:00
Reid Spencer
c23c9fce34
The Intrinsic::getDeclaration function's Tys parameter only contains the
...
types of the iAny types involved in the overloaded intrinsic. Thus, we
can't use the argument number as the index but have to count them separately
in order to index Tys correctly. This patch rectifies this situation.
llvm-svn: 37296
2007-05-22 19:30:31 +00:00
Reid Spencer
bdf03b4174
Reinstate the patch for escaping non-printing characters and allow for
...
\\ to escape \. All these cases are now handled by the AsmParser.
llvm-svn: 37295
2007-05-22 19:27:35 +00:00
Reid Spencer
c5cec2a4e8
Regenerate.
...
llvm-svn: 37294
2007-05-22 19:08:16 +00:00
Reid Spencer
0f656c39e1
Don't allow the UnEscape code to read or write beyond the end of yytext.
...
Make sure we convert \\ into \.
llvm-svn: 37293
2007-05-22 19:07:45 +00:00
Reid Spencer
acfe667eab
Regenerate.
...
llvm-svn: 37292
2007-05-22 18:52:55 +00:00
Reid Spencer
3b208cca84
Implement full unescaping of escaped hex characters in all quoted identifiers
...
and strings.
llvm-svn: 37291
2007-05-22 18:52:21 +00:00
Dale Johannesen
10c5ccc68f
Document boolOrDefault and its parser.
...
llvm-svn: 37290
2007-05-22 18:32:34 +00:00
Dale Johannesen
f9cbdc676c
name change requested by review of previous patch
...
llvm-svn: 37289
2007-05-22 18:31:04 +00:00
Owen Anderson
0ae7eb5e7c
Silence a warning.
...
llvm-svn: 37288
2007-05-22 18:13:40 +00:00
Dale Johannesen
a7120dde08
new testcases for -enable-tail-merge default handling
...
llvm-svn: 37287
2007-05-22 17:19:23 +00:00
Dale Johannesen
80fae16a06
Test assumes tail merging is off; this must now be explicit.
...
llvm-svn: 37286
2007-05-22 17:18:05 +00:00
Dale Johannesen
82810c8a13
Make tail merging the default, except on powerPC. There was no prior art
...
for a target-dependent default with a command-line override; this way
should be generally usable.
llvm-svn: 37285
2007-05-22 17:14:46 +00:00
Chris Lattner
83d7dd419a
temporarily revert reid's asmwriter patch, it is missing the asmparser piece
...
that decodes the escape sequences, thus breaking all cases that use them.
This fixes test/Assembler/2007-05-21-Escape.ll
llvm-svn: 37284
2007-05-22 07:00:50 +00:00
Chris Lattner
9a0ff5961b
new testcase for a recent regression
...
llvm-svn: 37283
2007-05-22 07:00:38 +00:00
Chris Lattner
77119f43af
update comment
...
llvm-svn: 37282
2007-05-22 06:56:32 +00:00
Chris Lattner
31ab0ed37f
regenerate
...
llvm-svn: 37281
2007-05-22 06:47:55 +00:00
Chris Lattner
9111cd6b8a
simplify code
...
llvm-svn: 37280
2007-05-22 06:47:11 +00:00
Tanya Lattner
3e85207fef
NightlyTest.pl does not exist.
...
llvm-svn: 37278
2007-05-22 06:12:51 +00:00
Tanya Lattner
e94a09e357
Adding 2.0 release
...
llvm-svn: 37277
2007-05-22 06:06:22 +00:00
Bill Wendling
3fb7fdfded
We only need to specify the most-implied feature for an architecture.
...
llvm-svn: 37275
2007-05-22 05:15:37 +00:00
Evan Cheng
1933bbc735
Consistency.
...
llvm-svn: 37274
2007-05-22 01:21:58 +00:00
Evan Cheng
204af78b96
Add test for PR1259.
...
llvm-svn: 37273
2007-05-21 23:30:33 +00:00
Evan Cheng
8c8afb27d7
Fix some -march=thumb regressions. tBR_JTr is not predicable.
...
llvm-svn: 37272
2007-05-21 23:17:32 +00:00
Dale Johannesen
d1de276c16
Use AXI3 not AXI2 for appropriate PIC PC-relative loads and stores. Cosmetic.
...
llvm-svn: 37271
2007-05-21 22:42:04 +00:00
Evan Cheng
e26c0916a3
If-convert early exit blocks (returns, etc.); bug fixes, etc.
...
llvm-svn: 37270
2007-05-21 22:22:58 +00:00
Dale Johannesen
7d55f3733e
Add some patterns for PIC PC-relative loads and stores.
...
llvm-svn: 37269
2007-05-21 22:14:33 +00:00
Evan Cheng
147b334b6a
BlockHasNoFallThrough() now returns true if block ends with a return instruction; AnalyzeBranch() should ignore predicated instructionsd.
...
llvm-svn: 37268
2007-05-21 18:56:31 +00:00
Duncan Sands
34e82a4508
Only emit one entry in the exception action table for each action, even if
...
it occurs for multiple landing pads.
llvm-svn: 37267
2007-05-21 18:50:28 +00:00
Evan Cheng
fc94eb66d2
BlockHasNoFallThrough() now returns true if block ends with a return instruction.
...
llvm-svn: 37266
2007-05-21 18:44:17 +00:00
Bill Wendling
ee854630e4
Update
...
llvm-svn: 37265
2007-05-20 19:56:24 +00:00
Reid Spencer
e44b45e757
Get the order of the hext digits right!
...
llvm-svn: 37261
2007-05-19 14:44:42 +00:00
Reid Spencer
6473fb7916
Adjust how LLVM names are produced:
...
1. Always use % for local and @ for global.
2. Replace NameNeedsQuotes with QuoteNameIfNeeded so that any adjustments
to the name can be done in one pass.
3. Implement generation of hex escapes so we don't get "wonky" characters
in the output.
llvm-svn: 37260
2007-05-19 07:25:21 +00:00
Reid Spencer
be9b3fce8a
Make sure we can round-trip an escaped value in a name.
...
llvm-svn: 37259
2007-05-19 07:22:24 +00:00
Reid Spencer
21526d6b56
Regenerate
...
llvm-svn: 37258
2007-05-19 07:22:10 +00:00
Reid Spencer
aba0cc7173
Make the %"..." syntax legal for local name. This just makes it symmetric
...
with global names which can already be @"..."
llvm-svn: 37257
2007-05-19 07:21:26 +00:00
Chris Lattner
a655a157a0
Fix Transforms/InstCombine/2007-05-18-CastFoldBug.ll, a bug that devastates
...
objc code due to the way the FE lowers objc message sends.
llvm-svn: 37256
2007-05-19 06:51:32 +00:00
Chris Lattner
faa31904e4
new testcase
...
llvm-svn: 37255
2007-05-19 06:50:37 +00:00
Reid Spencer
80fcb754d9
On Linux platforms and at optimization levels -O1 and above, llvm-gcc can
...
turn "putchar" calls into _IO_putc calls which is a lower-level interface.
This patch allows these calls to be executed by lli in interpreter mode.
llvm-svn: 37254
2007-05-19 01:36:17 +00:00
Chris Lattner
0306944992
add source
...
llvm-svn: 37253
2007-05-19 01:22:52 +00:00
Chris Lattner
e8bd53c36a
Handle negative strides much more optimally. This compiles X86/lsr-negative-stride.ll
...
into:
_t:
movl 8(%esp), %ecx
movl 4(%esp), %eax
cmpl %ecx, %eax
je LBB1_3 #bb17
LBB1_1: #bb
cmpl %ecx, %eax
jg LBB1_4 #cond_true
LBB1_2: #cond_false
subl %eax, %ecx
cmpl %ecx, %eax
jne LBB1_1 #bb
LBB1_3: #bb17
ret
LBB1_4: #cond_true
subl %ecx, %eax
cmpl %ecx, %eax
jne LBB1_1 #bb
jmp LBB1_3 #bb17
instead of:
_t:
subl $4, %esp
movl %esi, (%esp)
movl 12(%esp), %ecx
movl 8(%esp), %eax
cmpl %ecx, %eax
je LBB1_4 #bb17
LBB1_1: #bb.outer
movl %ecx, %edx
negl %edx
LBB1_2: #bb
cmpl %ecx, %eax
jle LBB1_5 #cond_false
LBB1_3: #cond_true
addl %edx, %eax
cmpl %ecx, %eax
jne LBB1_2 #bb
LBB1_4: #bb17
movl (%esp), %esi
addl $4, %esp
ret
LBB1_5: #cond_false
movl %ecx, %edx
subl %eax, %edx
movl %eax, %esi
addl %esi, %esi
cmpl %ecx, %esi
je LBB1_4 #bb17
LBB1_6: #cond_false.bb.outer_crit_edge
movl %edx, %ecx
jmp LBB1_1 #bb.outer
llvm-svn: 37252
2007-05-19 01:22:21 +00:00
Chris Lattner
afa90dc355
new testcase
...
llvm-svn: 37251
2007-05-19 01:21:39 +00:00
Chris Lattner
1fa8276e70
same patch as the previous one, but the symmetric case
...
llvm-svn: 37249
2007-05-19 00:46:51 +00:00
Chris Lattner
b08cbbd737
Disable the (A == (B-A)) -> 2*A == B xform when the sub has multiple uses (in
...
this case, the xform introduces an extra operation). This compiles
PowerPC/compare-duplicate.ll into:
_test:
subf r2, r3, r4
cmplw cr0, r2, r3
bne cr0, LBB1_2 ;F
instead of:
_test:
slwi r2, r3, 1
subf r3, r3, r4
cmplw cr0, r4, r2
bne cr0, LBB1_2 ;F
This is target independent of course.
llvm-svn: 37246
2007-05-19 00:43:44 +00:00
Chris Lattner
bde968823a
new testcase
...
llvm-svn: 37245
2007-05-19 00:41:40 +00:00
Reid Spencer
b6af1aae35
Fix an assertion introduced by my last change to the toString method. We
...
can't use getZExtValue() to extract the low order bits for each digit.
Instead, we need to access the low order word directly.
llvm-svn: 37242
2007-05-19 00:29:55 +00:00
Dan Gohman
c12dd5207d
Apply this patch:
...
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070514/049845.html
llvm-svn: 37240
2007-05-18 23:21:46 +00:00
Chris Lattner
7ea2df6e2a
add a note
...
llvm-svn: 37239
2007-05-18 20:18:14 +00:00
Dan Gohman
6164a1b279
Add a testcase for unrolling loops with unknown tripcounts.
...
llvm-svn: 37238
2007-05-18 19:59:23 +00:00
Evan Cheng
018cffbca4
Clean up.
...
llvm-svn: 37237
2007-05-18 19:32:08 +00:00
Evan Cheng
faaf716540
Change to depth-first traversal.
...
llvm-svn: 37236
2007-05-18 19:26:33 +00:00
Dale Johannesen
dafda82755
Document an inefficiency in tail merging.
...
llvm-svn: 37235
2007-05-18 18:46:40 +00:00
Dan Gohman
eefa83e67b
Use MVT::FIRST_VECTOR_VALUETYPE and MVT::LAST_VECTOR_VALUETYPE.
...
llvm-svn: 37234
2007-05-18 18:44:07 +00:00
Dan Gohman
b539df3389
Qualify calls to getTypeForValueType with MVT:: too.
...
llvm-svn: 37233
2007-05-18 18:41:29 +00:00
Evan Cheng
2e82cefd24
Some restructuring in preparation for most aggressive if-conversion.
...
llvm-svn: 37231
2007-05-18 18:14:37 +00:00
Dan Gohman
1796f1f8e9
Qualify several calls to functions in the MVT namespace, for consistency.
...
llvm-svn: 37230
2007-05-18 17:52:13 +00:00
Evan Cheng
f25d3a5d73
Watch out for blocks that end with a return.
...
llvm-svn: 37227
2007-05-18 17:06:53 +00:00
Duncan Sands
76256a069c
Fix typo.
...
llvm-svn: 37224
2007-05-18 12:13:34 +00:00
Duncan Sands
ea7a326468
Fix typo.
...
llvm-svn: 37223
2007-05-18 09:04:20 +00:00
Chris Lattner
3d1937591d
better portability for intptr_t.
...
llvm-svn: 37221
2007-05-18 07:07:05 +00:00
Chris Lattner
feadc1ebdc
finished the first draft
...
llvm-svn: 37219
2007-05-18 06:38:51 +00:00
Chris Lattner
727c3740e4
crank out notes
...
llvm-svn: 37218
2007-05-18 06:33:02 +00:00
Reid Spencer
ac1c2d93f1
Regenerate.
...
llvm-svn: 37207
2007-05-18 05:48:07 +00:00
Chris Lattner
6d84cdcfee
validation fix
...
llvm-svn: 37206
2007-05-18 05:38:44 +00:00
Chris Lattner
5538349a7c
validation fixes
...
llvm-svn: 37205
2007-05-18 05:36:14 +00:00
Chris Lattner
9eeada9470
Fix PR1434 and test/Linker/link-archive.ll, this is a regression from 1.9.
...
llvm-svn: 37204
2007-05-18 04:02:46 +00:00
Reid Spencer
7aed8fccfd
Add a test case for PR1434
...
llvm-svn: 37203
2007-05-18 03:46:50 +00:00
Reid Spencer
d266c18c0e
Avoid an infinite loop when TestRunner.sh is run outside of the test dir.
...
llvm-svn: 37201
2007-05-18 02:06:03 +00:00
Evan Cheng
478b805956
If true / false blocks fallthrough before ifcvt, add unconditional branches to ifcvt'd block.
...
llvm-svn: 37200
2007-05-18 01:55:58 +00:00
Evan Cheng
4ae1840d21
Mark calls non-predicable for now. Need to ensure it's the last instruction in the if-converted block or make sure it preserve condition code.
...
llvm-svn: 37199
2007-05-18 01:53:54 +00:00
Dale Johannesen
f8956178af
Remove some unneeded branches. (spotted by Evan, thanks)
...
llvm-svn: 37198
2007-05-18 01:28:58 +00:00
Evan Cheng
ea623560f8
Silence some compilation warnings.
...
llvm-svn: 37197
2007-05-18 01:19:57 +00:00
Chris Lattner
e0c1df4919
tweak
...
llvm-svn: 37196
2007-05-18 00:44:29 +00:00
Evan Cheng
0f745da4fe
Make use of target specific block size limits; bug fixes.
...
llvm-svn: 37195
2007-05-18 00:20:58 +00:00
Evan Cheng
6addd65914
Set ARM if-conversion block size threshold to 10 instructions for now.
...
llvm-svn: 37194
2007-05-18 00:19:34 +00:00
Evan Cheng
e20dd92792
RemoveBranch() and InsertBranch() now returns number of instructions deleted / inserted.
...
llvm-svn: 37193
2007-05-18 00:18:17 +00:00
Evan Cheng
99be49dd9b
RemoveBranch() and InsertBranch() now returns number of instructions deleted / inserted.
...
llvm-svn: 37192
2007-05-18 00:05:48 +00:00
Evan Cheng
c0dc382fb7
Fix comment.
...
llvm-svn: 37191
2007-05-18 00:00:30 +00:00
Evan Cheng
a92b2b38ff
Move isSuccessor() offline, change it to use std::find.
...
llvm-svn: 37190
2007-05-17 23:58:53 +00:00
Reid Spencer
07aa66887c
Fix a problem with building .y files when BISON is not present.
...
Merged from the release_20 branch.
llvm-svn: 37188
2007-05-17 22:51:35 +00:00
Devang Patel
2c30a37a5c
Fix PR1431
...
Test case at Transformations/SCCP/2007-05-16-InvokeCrash.ll
llvm-svn: 37185
2007-05-17 22:10:15 +00:00
Devang Patel
f9ed308aba
New test.
...
llvm-svn: 37184
2007-05-17 22:05:20 +00:00
Chris Lattner
6fd9b5e816
validation fixes
...
llvm-svn: 37183
2007-05-17 22:03:43 +00:00
Chris Lattner
2f131fe30d
llvm-gcc now supports almost all gcc extensions. The key missing one is
...
builtin_apply.
llvm-svn: 37182
2007-05-17 22:02:24 +00:00
Chris Lattner
8ce1ba466f
add a section about API changes.
...
llvm-svn: 37181
2007-05-17 21:41:31 +00:00
Dale Johannesen
58698d2534
More effective breakdown of memcpy into repeated load/store. These are now
...
in the order lod;lod;lod;sto;sto;sto which means the load-store optimizer
has a better chance of producing ldm/stm. Ideally you would get cooperation
from the RA as well but this is not there yet.
llvm-svn: 37179
2007-05-17 21:31:21 +00:00
Dan Gohman
99ec2d88fb
Correct a name in a comment.
...
llvm-svn: 37178
2007-05-17 21:30:39 +00:00
Chris Lattner
e1047b2cfe
silence some "comparison between signed and unsigned integer expressions"
...
warnings
llvm-svn: 37177
2007-05-17 20:01:40 +00:00
Chris Lattner
70c2175ed2
minor tweak
...
llvm-svn: 37176
2007-05-17 19:58:57 +00:00
Reid Spencer
5c138133b7
Get rid of leading zeros in the output of toString.
...
llvm-svn: 37175
2007-05-17 19:23:02 +00:00
Evan Cheng
0465aca5d2
New test case.
...
llvm-svn: 37174
2007-05-17 18:49:50 +00:00
Evan Cheng
afa1cb6da3
Fix a bogus check that prevented folding VECTOR_SHUFFLE to UNDEF; add an optimization to fold VECTOR_SHUFFLE to a zero vector.
...
llvm-svn: 37173
2007-05-17 18:45:50 +00:00
Evan Cheng
632c3f01ed
Added missing patterns for UNPCKH* and PUNPCKH*.
...
llvm-svn: 37172
2007-05-17 18:44:37 +00:00
Dan Gohman
26b4ef76d9
Fix some sporadic segfaults that are triggered when SmallVector's heap
...
storage lands near the end of the available address space. In the expression
Begin+N > Capacity, the Begin+N was overflowing. Fix this by replacing it
by with an expression that doesn't involve computation of an address
beyond the end of allocated memory.
llvm-svn: 37171
2007-05-17 18:29:01 +00:00
Chris Lattner
7bee9ad4f7
add testcase for 128-bit add/sub
...
llvm-svn: 37170
2007-05-17 18:22:37 +00:00
Chris Lattner
0184f88deb
disable MaskedValueIsZero, ComputeMaskedBits, and SimplifyDemandedBits for
...
i128 integers. The 64-bit masks are not wide enough to represent the results.
These should be converted to APInt someday.
llvm-svn: 37169
2007-05-17 18:19:23 +00:00
Chris Lattner
2135bc08d6
add expand support for ADDC/SUBC/ADDE/SUBE so we can codegen 128-bit add/sub on 32-bit (or less) targets
...
llvm-svn: 37168
2007-05-17 18:15:41 +00:00
Reid Spencer
184a2c5a67
Regenerate.
...
llvm-svn: 37166
2007-05-17 18:11:03 +00:00
Reid Spencer
ce90cbb5e1
Make Perl a required dependency and cause configure script to fail if it
...
is not found.
llvm-svn: 37164
2007-05-17 18:06:19 +00:00
Chris Lattner
dade607f19
This is the correct fix for PR1427. This fixes mmx-shuffle.ll and doesn't
...
cause other regressions.
llvm-svn: 37160
2007-05-17 17:13:13 +00:00
Anton Korobeynikov
1ad4618715
Revert patch for PR1427. It breaks almost all vector tests.
...
llvm-svn: 37159
2007-05-17 07:50:14 +00:00
Chris Lattner
3e549e9d5f
add support for 128-bit add/sub on ppc64
...
llvm-svn: 37158
2007-05-17 06:52:46 +00:00
Reid Spencer
07ae5465cd
Print integer values as both decimal and hexadecimal for convenience
...
of verifying result values when debugging.
llvm-svn: 37156
2007-05-17 06:47:54 +00:00
Chris Lattner
13f4bf5c5e
add support for 128-bit integer add/sub
...
llvm-svn: 37154
2007-05-17 06:35:11 +00:00
Reid Spencer
fffdf10566
For lshr by 0 bits, just return *this as a short cut. This also prevents
...
undefined behavior when the width > 64 bits.
llvm-svn: 37153
2007-05-17 06:26:29 +00:00
Devang Patel
2648effb23
New test.
...
llvm-svn: 37151
2007-05-17 06:22:12 +00:00
Chris Lattner
6a5a46322f
Fix PR1427 and test/CodeGen/X86/mmx-shuffle.ll
...
llvm-svn: 37141
2007-05-17 03:29:42 +00:00
Chris Lattner
5de4944f70
testcase for PR1427
...
llvm-svn: 37140
2007-05-17 03:29:17 +00:00
Evan Cheng
2db22024cf
Remove. Not needed.
...
llvm-svn: 37139
2007-05-17 00:11:35 +00:00
Evan Cheng
733b4bd8ae
Default implementation of TargetInstrInfo::getBlockSize().
...
llvm-svn: 37138
2007-05-16 23:53:44 +00:00
Evan Cheng
429178d727
Add target hook to specify block size limit for if-conversion.
...
llvm-svn: 37134
2007-05-16 23:45:53 +00:00
Tanya Lattner
6ee68ca990
Merged in both release announcement guts.
...
llvm-svn: 37131
2007-05-16 23:25:46 +00:00
Dale Johannesen
7a6c175e7a
Don't fold bitconvert(load) for preinc/postdec loads. Likewise stores.
...
llvm-svn: 37130
2007-05-16 22:45:30 +00:00
Evan Cheng
af71610429
isBlockPredicable() always ignore terminal instructions; add comments.
...
llvm-svn: 37126
2007-05-16 21:54:37 +00:00
Evan Cheng
1634e7186b
ARM::tB is also predicable.
...
llvm-svn: 37125
2007-05-16 21:53:43 +00:00
Evan Cheng
dcff2eb0e8
PredicateInstruction returns true if the operation was successful.
...
llvm-svn: 37124
2007-05-16 21:53:07 +00:00
Evan Cheng
973c3739b0
Add default implementation of PredicateInstruction().
...
llvm-svn: 37123
2007-05-16 21:20:37 +00:00
Evan Cheng
5ea933a009
Rename M_PREDICATED to M_PREDICABLE; Moved isPredicable() to MachineInstr.
...
llvm-svn: 37121
2007-05-16 20:56:08 +00:00
Evan Cheng
4423687831
Move if-conversion after all passes that may use register scavenger.
...
llvm-svn: 37120
2007-05-16 20:52:46 +00:00
Evan Cheng
e2762c3d68
Removed isPredicable().
...
llvm-svn: 37119
2007-05-16 20:50:23 +00:00
Evan Cheng
dcd6cdf896
Make ARM::B isPredicable; Make Bcc and MOVCC condition option a normal operand so they are not predicable.
...
llvm-svn: 37118
2007-05-16 20:50:01 +00:00
Evan Cheng
cc33218607
Added isPredicable bit to class Instruction.
...
llvm-svn: 37117
2007-05-16 20:47:01 +00:00
Evan Cheng
b99726d7a0
Rename M_PREDICATED to M_PREDICABLE; opcode can be specified isPredicable without having a PredicateOperand.
...
llvm-svn: 37116
2007-05-16 20:45:24 +00:00
Evan Cheng
b862b46aac
Rename M_PREDICATED to M_PREDICABLE; Move TargetInstrInfo::isPredicatable() to MachineInstr::isPredicable().
...
llvm-svn: 37115
2007-05-16 20:43:42 +00:00
Reid Spencer
a93c981f66
Fix a bug in the "fromString" method where radix 2,8 and 16 values were
...
not being generated correctly because the shl operator does not mutate its
object but returns a new value. Also, make the distinction between radix
16 and the others more clear.
llvm-svn: 37111
2007-05-16 19:18:22 +00:00
Reid Spencer
138249b8ca
Update for arbitrary precision integer types.
...
llvm-svn: 37109
2007-05-16 18:44:01 +00:00
Reid Spencer
99e813eee9
Fix PR1355: Only compute the SUBPATH and TESTDIR once.
...
llvm-svn: 37108
2007-05-16 17:56:56 +00:00
Devang Patel
95e2b7b59e
Fix PR number.
...
llvm-svn: 37107
2007-05-16 16:51:31 +00:00
Devang Patel
7d6b9e057c
New test for PR1417
...
llvm-svn: 37106
2007-05-16 16:50:32 +00:00
Reid Spencer
1925c537f2
Avoid a "loss of precision" error in gcc 4.1.3.
...
llvm-svn: 37105
2007-05-16 16:39:29 +00:00
Duncan Sands
59ae77486c
Output exception call-sites in address order, as required by the unwinding
...
runtime.
llvm-svn: 37104
2007-05-16 12:12:23 +00:00
Evan Cheng
01a4227ed1
Conditional branch is not a barrier.
...
llvm-svn: 37103
2007-05-16 07:45:54 +00:00
Chris Lattner
48fb92f75d
Use a ptr set instead of a linear search to unique TokenFactor operands.
...
This fixes PR1423
llvm-svn: 37102
2007-05-16 06:37:59 +00:00
Chris Lattner
1087473e51
testcase for maskmovq
...
llvm-svn: 37101
2007-05-16 06:14:10 +00:00
Chris Lattner
888653cdba
implement the missing maskmovq mmx intrinsic that akor hit.
...
llvm-svn: 37100
2007-05-16 06:08:17 +00:00
Chris Lattner
bf7366e908
add missing mmx intrinsic
...
llvm-svn: 37099
2007-05-16 06:03:49 +00:00
Evan Cheng
c95f95b6da
Fix comment.
...
llvm-svn: 37098
2007-05-16 05:14:06 +00:00
Evan Cheng
35fc2119b0
Devang points out that we need an assertion here.
...
llvm-svn: 37097
2007-05-16 05:11:10 +00:00
Evan Cheng
c4f5ac8383
Fix comments.
...
llvm-svn: 37096
2007-05-16 05:09:34 +00:00
Reid Spencer
65ba7501fc
Implement printing of instruction result values when debug info is turned
...
on. This helps to speed up the debugging time by showing computational
results as the program executes.
llvm-svn: 37095
2007-05-16 02:05:13 +00:00
Evan Cheng
288f133c71
Bug fix: should check ABI alignment, not pref. alignment.
...
llvm-svn: 37094
2007-05-16 02:04:50 +00:00
Evan Cheng
ad3aac71ce
Hooks for predication support.
...
llvm-svn: 37093
2007-05-16 02:01:49 +00:00
Evan Cheng
f5e53a58db
Initial commit of (very basic) if converter.
...
llvm-svn: 37092
2007-05-16 02:00:57 +00:00
Evan Cheng
eb3176552e
Add TargetInstrInfo predication hooks.
...
llvm-svn: 37091
2007-05-16 01:58:56 +00:00
Devang Patel
431b6a5d4a
New test.
...
llvm-svn: 37090
2007-05-15 23:44:27 +00:00
Dale Johannesen
420a85d0cf
Remove extra CFG edges before doing these passes; it makes them happier.
...
llvm-svn: 37089
2007-05-15 21:19:17 +00:00
Chris Lattner
9b7e57315e
add PR number and testcase from the PR.
...
llvm-svn: 37088
2007-05-15 20:40:25 +00:00
Chris Lattner
df341b48a3
new testcase
...
llvm-svn: 37087
2007-05-15 20:29:56 +00:00
Lauro Ramos Venancio
3f142cbca2
Fix an infinite recursion in GetNegatedExpression.
...
llvm-svn: 37086
2007-05-15 17:05:43 +00:00
Reid Spencer
13612b1491
Don't put test cases into regression test suite before the bug is fixed.
...
llvm-svn: 37085
2007-05-15 15:46:41 +00:00
Duncan Sands
750e8c5d4d
The index into the actions table is a ULEB128 not a SLEB128.
...
llvm-svn: 37084
2007-05-15 13:54:14 +00:00
Nicolas Geoffray
77d99504cb
Note on current implementation of ELF32/PPC ABI.
...
llvm-svn: 37083
2007-05-15 09:21:28 +00:00
Reid Spencer
1582c0548f
Add a test case for PR1420
...
llvm-svn: 37082
2007-05-15 06:52:15 +00:00
Chris Lattner
66ad6fac2f
selects can also reach here
...
llvm-svn: 37081
2007-05-15 06:42:04 +00:00
Chris Lattner
a6f88ced8b
implement the ModuleProvider::dematerializeFunction hook
...
llvm-svn: 37080
2007-05-15 06:29:44 +00:00
Reid Spencer
daed139420
Un-brain-dead-ify the lowering of part set for the reverse case.
...
llvm-svn: 37071
2007-05-15 02:26:52 +00:00
Chris Lattner
2b5badc0e1
Fix CodeGen/PowerPC/2007-05-14-InlineAsmSelectCrash.ll, the other recent
...
patches are also needed.
llvm-svn: 37070
2007-05-15 01:36:44 +00:00
Chris Lattner
c7596efdad
Fix some subtle issues handling immediate values. This fixes
...
test/CodeGen/ARM/2007-05-14-InlineAsmCstCrash.ll
llvm-svn: 37069
2007-05-15 01:33:58 +00:00
Chris Lattner
a7a37a107e
new testcase that crashes llc
...
llvm-svn: 37068
2007-05-15 01:33:12 +00:00
Chris Lattner
0b7472da6f
fix some subtle inline asm selection issues
...
llvm-svn: 37067
2007-05-15 01:31:05 +00:00
Evan Cheng
0f7cbe8370
Add PredicateOperand to all ARM instructions that have the condition field.
...
llvm-svn: 37066
2007-05-15 01:29:07 +00:00
Chris Lattner
c8798d085c
fix subtle bugs in inline asm operand selection
...
llvm-svn: 37065
2007-05-15 01:28:08 +00:00
Evan Cheng
4d728b0419
Added getNumExplicitOperands and findFirstPredOperand.
...
llvm-svn: 37064
2007-05-15 01:26:09 +00:00
Evan Cheng
a32dee205f
Added \!con(a,b) syntax to concatnate two dag fragments.
...
llvm-svn: 37063
2007-05-15 01:23:24 +00:00
Evan Cheng
785276fcda
All operands that made up of the predicate operands are maked M_PREDICATE_OPERAND.
...
llvm-svn: 37062
2007-05-15 01:21:27 +00:00
Evan Cheng
c0fb94596a
Mark all (not just the first) predicate operand M_PREDICATE_OPERAND.
...
llvm-svn: 37061
2007-05-15 01:20:36 +00:00
Evan Cheng
b0925c0e49
PredicateOperand related bug fix.
...
llvm-svn: 37060
2007-05-15 01:19:51 +00:00
Chris Lattner
c5900bd25b
testcase that crashes llc
...
llvm-svn: 37059
2007-05-15 01:13:42 +00:00
Dan Gohman
eca3b67199
Correct a comment.
...
llvm-svn: 37058
2007-05-15 00:20:13 +00:00
Chris Lattner
234f96daa8
Fix Transforms/InstCombine/2007-05-14-Crash.ll
...
llvm-svn: 37057
2007-05-15 00:16:00 +00:00
Chris Lattner
120548e508
New testcase that crashes instcombine
...
llvm-svn: 37056
2007-05-15 00:15:49 +00:00
Lauro Ramos Venancio
1b8d46ab21
Fix previous patch. GOTOFF can be used only when the symbol has internal
...
linkage or hidden visibility.
llvm-svn: 37055
2007-05-14 23:20:21 +00:00
Chris Lattner
e49c974a7c
implement a simple fneg optimization/propagation thing. This compiles:
...
CodeGen/PowerPC/fneg.ll into:
_t4:
fmul f0, f3, f4
fmadd f1, f1, f2, f0
blr
instead of:
_t4:
fneg f0, f3
fmul f0, f0, f4
fmsub f1, f1, f2, f0
blr
llvm-svn: 37054
2007-05-14 22:04:50 +00:00
Chris Lattner
d1e6255141
new testcase
...
llvm-svn: 37053
2007-05-14 22:04:16 +00:00
Evan Cheng
e1595b6859
Only worry about intervening kill if there are more than one live ranges in the interval.
...
llvm-svn: 37052
2007-05-14 21:23:51 +00:00
Evan Cheng
4c28ec187e
Test for PR1406.
...
llvm-svn: 37051
2007-05-14 21:12:43 +00:00
Evan Cheng
c690cba7d9
Fix for PR1406:
...
v1 =
r2 = move v1
= op r2<kill>
...
r2 = move v1
= op r2<kill>
Clear the first r2 kill if v1 and r2 are joined.
llvm-svn: 37050
2007-05-14 21:10:05 +00:00
Evan Cheng
03c64ec842
New test.
...
llvm-svn: 37048
2007-05-14 20:47:21 +00:00
Evan Cheng
5c7ce4561f
Doh. .cpp -> .ll
...
llvm-svn: 37047
2007-05-14 20:43:28 +00:00
Evan Cheng
fc2377d4ed
When marking a register as being implicitly defined, make sure to clear its partial use info as well.
...
llvm-svn: 37046
2007-05-14 20:39:18 +00:00
Lauro Ramos Venancio
d705f5d51d
Optimize PIC implementation. GOTOFF can be used when the symbol is defined
...
and used in the same module.
llvm-svn: 37044
2007-05-14 18:46:23 +00:00
Lauro Ramos Venancio
3551928a2b
Enable aliases on arm-linux.
...
llvm-svn: 37042
2007-05-14 18:32:56 +00:00
Evan Cheng
bc5c15276b
Remove duplicated line.
...
llvm-svn: 37040
2007-05-14 18:03:45 +00:00
Reid Spencer
9cdab38520
Reverse last patch .. premature. Depends on uncommitted CBE patch.
...
llvm-svn: 37039
2007-05-14 17:58:52 +00:00
Reid Spencer
9c6a4d64aa
Update this test to match the (corrected) output from the CBE.
...
llvm-svn: 37038
2007-05-14 17:56:39 +00:00
Reid Spencer
764ae2a21b
Give names to the final result values of the part_set computations. This
...
just aids in readability and debugability of the output. No functional change.
llvm-svn: 37037
2007-05-14 17:21:17 +00:00
Reid Spencer
146281ce1a
The wrapping behavior of part_set is not desirable. Adjust the
...
documentation to describe the desired behavior.
llvm-svn: 37036
2007-05-14 16:50:20 +00:00
Reid Spencer
70845c05e4
Revise definition of part_select. The wrapping behavior is not useful so
...
in the reverse case the only difference is that the bits are returned in
reverse order.
llvm-svn: 37035
2007-05-14 16:14:57 +00:00
Dan Gohman
8d40e4d965
Correct a few comments.
...
llvm-svn: 37034
2007-05-14 14:31:17 +00:00
Dan Gohman
90d97ac1e6
Add passes -view-cfg and -view-cfg-only that are like -print-cfg and
...
-print-cfg-only except they use the ViewCFG function, which displays the
CFG rendered with graphviz with gv.
llvm-svn: 37033
2007-05-14 14:25:08 +00:00
Dan Gohman
86110bdf06
Use templates for the GraphType for DefaultDOTGraphTraits' members instead
...
of just using void*. This allows it to be used with graph adapters like
Inverse.
llvm-svn: 37032
2007-05-14 14:23:27 +00:00