Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.55 - 1.56
---
Log message:
Properly remove duplicate instructions as result of diamond if-conversion.
Other bug fixes.
---
Diffs of the changes: (+176 -103)
IfConversion.cpp | 279
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.56 - 1.57
---
Log message:
Fix some fragile code wrt CFG edge updating.
---
Diffs of the changes: (+39 -74)
IfConversion.cpp | 113 ++-
1 files changed, 39 insertions(+),
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.57 - 1.58
---
Log message:
Replace TargetInstrInfo::CanBeDuplicated() with a M_NOT_DUPLICABLE bit.
---
Diffs of the changes: (+2 -2)
IfConversion.cpp |4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
Index:
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.54 - 1.55
---
Log message:
Really turn if-converter loose:
1. Consider all possible ifcvt cases at once. No longer restricted to bottom
up iterative approach.
2. Sort all possible cases based on a cost function. Perform the
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.51 - 1.52
---
Log message:
Extra edges are deleted later if needed.
---
Diffs of the changes: (+0 -1)
IfConversion.cpp |1 -
1 files changed, 1 deletion(-)
Index: llvm/lib/CodeGen/IfConversion.cpp
diff -u
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.52 - 1.53
MachineInstr.cpp updated: 1.151 - 1.152
---
Log message:
MachineInstr::isPredicable() is no longer needed.
---
Diffs of the changes: (+5 -10)
IfConversion.cpp | 11 +--
MachineInstr.cpp |4
2
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.53 - 1.54
---
Log message:
Not every predicable block can be safely duplicated.
---
Diffs of the changes: (+35 -8)
IfConversion.cpp | 43 +++
1 files changed, 35 insertions(+), 8
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.46 - 1.47
---
Log message:
Fix some stupid bugs that have effectively disabled if-conversion.
---
Diffs of the changes: (+7 -1)
IfConversion.cpp |8 +++-
1 files changed, 7 insertions(+), 1 deletion(-)
Index:
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.47 - 1.48
---
Log message:
Fix typo.
---
Diffs of the changes: (+1 -1)
IfConversion.cpp |2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
Index: llvm/lib/CodeGen/IfConversion.cpp
diff -u
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.48 - 1.49
---
Log message:
If BB is predicated, invalidate its predecessor(s) which would if-convert it.
It needs to be re-analyzed.
---
Diffs of the changes: (+7 -3)
IfConversion.cpp | 10 +++---
1 files changed, 7
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.49 - 1.50
---
Log message:
No really, clear predcessors states.
---
Diffs of the changes: (+8 -7)
IfConversion.cpp | 15 ---
1 files changed, 8 insertions(+), 7 deletions(-)
Index:
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.43 - 1.44
---
Log message:
Restructure code to reduce ifcvt compile time cost.
---
Diffs of the changes: (+193 -155)
IfConversion.cpp | 348 ++-
1 files changed, 193
Perhaps. Will take a look. Thx.
Evan
On Jun 8, 2007, at 3:10 PM, Dale Johannesen wrote:
On Jun 8, 2007, at 3:01 PM, Evan Cheng wrote:
+/// RemoveExtraEdges - Remove true / false edges if either / both
are no longer
+/// successors.
This does pretty much the same thing as
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.42 - 1.43
---
Log message:
Fix the build.
---
Diffs of the changes: (+2 -1)
IfConversion.cpp |3 ++-
1 files changed, 2 insertions(+), 1 deletion(-)
Index: llvm/lib/CodeGen/IfConversion.cpp
diff -u
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.37 - 1.38
---
Log message:
Allow more cmp / bcc to be predicated; clean up triangle ifcvt checking code.
---
Diffs of the changes: (+135 -144)
IfConversion.cpp | 279 ++-
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.38 - 1.39
---
Log message:
Hidden options to help debugging ifcvt issues.
---
Diffs of the changes: (+32 -2)
IfConversion.cpp | 34 --
1 files changed, 32 insertions(+), 2 deletions(-)
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.39 - 1.40
---
Log message:
Correct transfer predicate information.
---
Diffs of the changes: (+6 -8)
IfConversion.cpp | 14 ++
1 files changed, 6 insertions(+), 8 deletions(-)
Index:
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.40 - 1.41
---
Log message:
Carefully remove extraneous CFG edges after each ifcvt.
---
Diffs of the changes: (+51 -24)
IfConversion.cpp | 75 +--
1 files changed, 51
On Jun 8, 2007, at 3:01 PM, Evan Cheng wrote:
+/// RemoveExtraEdges - Remove true / false edges if either / both
are no longer
+/// successors.
This does pretty much the same thing as CorrectExtraCFGEdges in
BranchFolding.cpp,
although I'm sure there are subtleties. Can we combine them?
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.41 - 1.42
---
Log message:
Don't change CFG during analysis stage. Do so during ifcvt and invalidate
predecessors accordingly.
---
Diffs of the changes: (+106 -56)
IfConversion.cpp | 162
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.35 - 1.36
---
Log message:
ifcvt a triangle: don't merge ifcvt block with rejoin block if it can fall
through to it. If merged, the resulting block is not a candidate for iterative
ifcvting since it contains both predicated
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.32 - 1.33
---
Log message:
Lots of bug fixes.
---
Diffs of the changes: (+76 -40)
IfConversion.cpp | 116 ---
1 files changed, 76 insertions(+), 40 deletions(-)
Index:
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.33 - 1.34
---
Log message:
Quick patch to fix the build, based on what it appears Evan meant to write.
Evan, please check that this is in fact correct.
---
Diffs of the changes: (+1 -1)
IfConversion.cpp |2 +-
1 files
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.34 - 1.35
---
Log message:
Lots of bug fixes. Now finally in a reasonable state.
---
Diffs of the changes: (+104 -78)
IfConversion.cpp | 182 +++
1 files changed, 104
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.25 - 1.26
---
Log message:
I had a senior moment.
---
Diffs of the changes: (+4 -3)
IfConversion.cpp |7 ---
1 files changed, 4 insertions(+), 3 deletions(-)
Index: llvm/lib/CodeGen/IfConversion.cpp
diff -u
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.26 - 1.27
---
Log message:
Do not ifcvt if either true / false path is a backedge. Not profitable in
almost all cases.
---
Diffs of the changes: (+3 -0)
IfConversion.cpp |3 +++
1 files changed, 3 insertions(+)
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.27 - 1.28
---
Log message:
ReplaceUsesOfBlockWith() can modify the predecessors list.
---
Diffs of the changes: (+4 -3)
IfConversion.cpp |7 ---
1 files changed, 4 insertions(+), 3 deletions(-)
Index:
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.28 - 1.29
---
Log message:
Fix diamond shape ifcvt bugs.
---
Diffs of the changes: (+41 -61)
IfConversion.cpp | 102 ++-
1 files changed, 41 insertions(+), 61
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.29 - 1.30
---
Log message:
Fix a couple of typos and be smarter about order of blocks when ifcvt a diamond.
---
Diffs of the changes: (+30 -17)
IfConversion.cpp | 47 ++-
1
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.30 - 1.31
---
Log message:
Minor statistics counting bug.
---
Diffs of the changes: (+5 -3)
IfConversion.cpp |8 +---
1 files changed, 5 insertions(+), 3 deletions(-)
Index: llvm/lib/CodeGen/IfConversion.cpp
diff
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.31 - 1.32
---
Log message:
If a unconditional branch is added to branch to the false path during ifcvt,
the predicated block cannot be iteratively ifcvted.
---
Diffs of the changes: (+33 -6)
IfConversion.cpp | 39
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.21 - 1.22
---
Log message:
Let IfConverter loose. Allow more aggressive subsumptions; reorder basic blocks
to expose more ifcvt opportunities; code clean up and fixes.
---
Diffs of the changes: (+264 -196)
IfConversion.cpp
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.22 - 1.23
---
Log message:
Forgot to check for if iterator reached the end.
---
Diffs of the changes: (+2 -1)
IfConversion.cpp |3 ++-
1 files changed, 2 insertions(+), 1 deletion(-)
Index:
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.23 - 1.24
---
Log message:
Fix some subtle bugs: bug during succeessor copying; incorrectly updating
states of ifcvted blocks.
---
Diffs of the changes: (+19 -20)
IfConversion.cpp | 39
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.24 - 1.25
---
Log message:
If the predicated block requires an early exit, end the block there and add a
unconditional branch to false block. AnalyzeBranch() does not understand early
exits.
---
Diffs of the changes: (+3
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.19 - 1.20
---
Log message:
Ifcvt triangle: don't ifcvt 'true' BB if it has other predecessors; don't merge
'false' BB if it has other predecessors.
---
Diffs of the changes: (+18 -3)
IfConversion.cpp | 21
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.16 - 1.17
---
Log message:
Fix a typo.
---
Diffs of the changes: (+1 -1)
IfConversion.cpp |2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
Index: llvm/lib/CodeGen/IfConversion.cpp
diff -u
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.17 - 1.18
---
Log message:
Allow multiple ifcvt candidates to share children blocks; add some debugging
code.
---
Diffs of the changes: (+20 -7)
IfConversion.cpp | 27 ---
1 files changed, 20
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.18 - 1.19
---
Log message:
Remove a bogus check. Even terminators in a ifcvt need to be predicated.
Unconditional branches can usually be converted to conditional ones.
---
Diffs of the changes: (+1 -3)
IfConversion.cpp |
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.15 - 1.16
---
Log message:
Change traversal order to bottom up in preparation for more aggressive
if-conversion.
---
Diffs of the changes: (+69 -23)
IfConversion.cpp | 92
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.13 - 1.14
---
Log message:
If there is an empty block between a source and its successor block, it still
requires a unconditional branch.
---
Diffs of the changes: (+37 -30)
IfConversion.cpp | 67
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.14 - 1.15
---
Log message:
Don't merge in tail block of a diamond if it has more than one predecessors
after if-conversion.
---
Diffs of the changes: (+4 -2)
IfConversion.cpp |6 --
1 files changed, 4
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.12 - 1.13
---
Log message:
Silly boog.
---
Diffs of the changes: (+9 -9)
IfConversion.cpp | 18 +-
1 files changed, 9 insertions(+), 9 deletions(-)
Index: llvm/lib/CodeGen/IfConversion.cpp
diff -u
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.11 - 1.12
---
Log message:
Preliminary iterative if-conversion support.
---
Diffs of the changes: (+166 -96)
IfConversion.cpp | 262 ++-
1 files changed, 166
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.10 - 1.11
---
Log message:
If-convert early exit blocks (returns, etc.); bug fixes, etc.
---
Diffs of the changes: (+226 -141)
IfConversion.cpp | 367 +--
1 files
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.6 - 1.7
---
Log message:
Watch out for blocks that end with a return.
---
Diffs of the changes: (+2 -2)
IfConversion.cpp |4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
Index:
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.7 - 1.8
---
Log message:
Some restructuring in preparation for most aggressive if-conversion.
---
Diffs of the changes: (+71 -40)
IfConversion.cpp | 111 +++
1 files
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.8 - 1.9
---
Log message:
Change to depth-first traversal.
---
Diffs of the changes: (+22 -11)
IfConversion.cpp | 33 ++---
1 files changed, 22 insertions(+), 11 deletions(-)
Index:
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.9 - 1.10
---
Log message:
Clean up.
---
Diffs of the changes: (+5 -5)
IfConversion.cpp | 10 +-
1 files changed, 5 insertions(+), 5 deletions(-)
Index: llvm/lib/CodeGen/IfConversion.cpp
diff -u
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.4 - 1.5
---
Log message:
Make use of target specific block size limits; bug fixes.
---
Diffs of the changes: (+149 -64)
IfConversion.cpp | 213 ++-
1 files changed, 149
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.5 - 1.6
---
Log message:
If true / false blocks fallthrough before ifcvt, add unconditional branches to
ifcvt'd block.
---
Diffs of the changes: (+19 -4)
IfConversion.cpp | 23 +++
1 files changed, 19
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.2 - 1.3
---
Log message:
Rename M_PREDICATED to M_PREDICABLE; Moved isPredicable() to MachineInstr.
---
Diffs of the changes: (+12 -12)
IfConversion.cpp | 24
1 files changed, 12 insertions(+), 12
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp added (r1.1)
---
Log message:
Initial commit of (very basic) if converter.
---
Diffs of the changes: (+304 -0)
IfConversion.cpp | 304 +++
1 files changed, 304 insertions(+)
On May 15, 2007, at 7:01 PM, Evan Cheng wrote:
+ if (!BBI.FBB)
+ BBI.FBB = findFalseBlock(BB, BBI.TBB);
+ AnalyzeBlock(BBI.FBB);
+ BBInfo FBBI = BBAnalysis[BBI.FBB-getNumber()];
If findFalseBlock returns NULL then AnalyzeBlock may crash here.
-
It shouldn't. :-) I am missing an assert.
This check earlier ensures that the block ends with either a
conditional branch or a conditional branch + a unconditional branch.
if (TII-AnalyzeBranch(*BB, BBI.TBB, BBI.FBB, BBI.Cond)
|| !BBI.TBB || BBI.Cond.size() == 0)
BBI.FBB is only NULL
Unless I am reading the code wrong... :-)
Evan
On May 15, 2007, at 10:09 PM, Evan Cheng wrote:
It shouldn't. :-) I am missing an assert.
This check earlier ensures that the block ends with either a
conditional branch or a conditional branch + a unconditional branch.
if
Changes in directory llvm/lib/CodeGen:
IfConversion.cpp updated: 1.1 - 1.2
---
Log message:
Devang points out that we need an assertion here.
---
Diffs of the changes: (+2 -0)
IfConversion.cpp |2 ++
1 files changed, 2 insertions(+)
Index: llvm/lib/CodeGen/IfConversion.cpp
diff -u
57 matches
Mail list logo