mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-27 13:40:30 +00:00
Update to new predicate simplifier VRP design. Fixes PR966 and PR967.
Remove predicate simplifier from default gcc3 pipeline. New design is too slow to enable by default. Add new testcases for problems encountered in development. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31895 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6d0fbd4185
commit
565706b93e
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,19 @@
|
||||
; RUN: llvm-as < %s | opt -predsimplify -disable-output
|
||||
|
||||
void %readMotionInfoFromNAL() {
|
||||
entry:
|
||||
br bool false, label %bb2425, label %cond_next30
|
||||
|
||||
cond_next30: ; preds = %entry
|
||||
ret void
|
||||
|
||||
bb2418: ; preds = %bb2425
|
||||
ret void
|
||||
|
||||
bb2425: ; preds = %entry
|
||||
%tmp2427 = setgt int 0, 3 ; <bool> [#uses=1]
|
||||
br bool %tmp2427, label %cond_next2429, label %bb2418
|
||||
|
||||
cond_next2429: ; preds = %bb2425
|
||||
ret void
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
; RUN: llvm-as < %s | opt -predsimplify -disable-output
|
||||
|
||||
int %test_wp_B_slice(int %select_method) {
|
||||
entry:
|
||||
br label %bb309
|
||||
|
||||
cond_true114: ; preds = %bb309
|
||||
%tmp130 = setlt int 0, 128 ; <bool> [#uses=1]
|
||||
%min = select bool %tmp130, int 0, int 127 ; <int> [#uses=2]
|
||||
%tmp143 = load int* null ; <int> [#uses=1]
|
||||
br bool false, label %bb303, label %bb314
|
||||
|
||||
cond_true166: ; preds = %bb303
|
||||
ret int 0
|
||||
|
||||
cond_false200: ; preds = %bb303
|
||||
%tmp205 = sdiv int %min, 2 ; <int> [#uses=1]
|
||||
%iftmp.380.0.p = select bool false, int 0, int %tmp205 ; <int> [#uses=0]
|
||||
ret int 0
|
||||
|
||||
bb303: ; preds = %cond_true114
|
||||
%tmp165 = seteq int %min, 0 ; <bool> [#uses=1]
|
||||
br bool %tmp165, label %cond_true166, label %cond_false200
|
||||
|
||||
bb309: ; preds = %bb19
|
||||
br bool false, label %cond_true114, label %bb314
|
||||
|
||||
bb314: ; preds = %bb309
|
||||
ret int 0
|
||||
}
|
14
test/Transforms/PredicateSimplifier/2006-11-05-CycleGTLT.ll
Normal file
14
test/Transforms/PredicateSimplifier/2006-11-05-CycleGTLT.ll
Normal file
@ -0,0 +1,14 @@
|
||||
; RUN: llvm-as < %s | opt -predsimplify -disable-output
|
||||
|
||||
void %diff(int %N) {
|
||||
entry:
|
||||
%tmp = setgt int %N, 0 ; <bool> [#uses=1]
|
||||
br bool %tmp, label %bb519, label %bb744
|
||||
|
||||
bb519: ; preds = %entry
|
||||
%tmp720101 = setlt int %N, 0 ; <bool> [#uses=1]
|
||||
br bool %tmp720101, label %bb744, label %bb744
|
||||
|
||||
bb744: ; preds = %bb519, %entry
|
||||
ret void
|
||||
}
|
31
test/Transforms/PredicateSimplifier/2006-11-11-Squeeze.ll
Normal file
31
test/Transforms/PredicateSimplifier/2006-11-11-Squeeze.ll
Normal file
@ -0,0 +1,31 @@
|
||||
; RUN: llvm-as < %s | opt -predsimplify -disable-output
|
||||
|
||||
%struct.cube_struct = type { int, int, int, int*, int*, int*, int*, int*, uint*, uint*, uint**, uint**, uint*, uint*, uint, int, int*, int, int }
|
||||
%cube = external global %struct.cube_struct ; <%struct.cube_struct*> [#uses=2]
|
||||
|
||||
implementation ; Functions:
|
||||
|
||||
fastcc void %cube_setup() {
|
||||
entry:
|
||||
%tmp = load int* getelementptr (%struct.cube_struct* %cube, int 0, uint 2) ; <int> [#uses=2]
|
||||
%tmp = setlt int %tmp, 0 ; <bool> [#uses=1]
|
||||
br bool %tmp, label %bb, label %cond_next
|
||||
|
||||
cond_next: ; preds = %entry
|
||||
%tmp2 = load int* getelementptr (%struct.cube_struct* %cube, int 0, uint 1) ; <int> [#uses=2]
|
||||
%tmp5 = setlt int %tmp2, %tmp ; <bool> [#uses=1]
|
||||
br bool %tmp5, label %bb, label %bb6
|
||||
|
||||
bb: ; preds = %cond_next, %entry
|
||||
unreachable
|
||||
|
||||
bb6: ; preds = %cond_next
|
||||
%tmp98124 = setgt int %tmp2, 0 ; <bool> [#uses=1]
|
||||
br bool %tmp98124, label %bb42, label %bb99
|
||||
|
||||
bb42: ; preds = %bb6
|
||||
ret void
|
||||
|
||||
bb99: ; preds = %bb6
|
||||
ret void
|
||||
}
|
54
test/Transforms/PredicateSimplifier/2006-11-12-MergeNodes.ll
Normal file
54
test/Transforms/PredicateSimplifier/2006-11-12-MergeNodes.ll
Normal file
@ -0,0 +1,54 @@
|
||||
; RUN: llvm-as < %s | opt -predsimplify -disable-output
|
||||
|
||||
; ModuleID = 'b.bc'
|
||||
target datalayout = "e-p:32:32"
|
||||
target endian = little
|
||||
target pointersize = 32
|
||||
target triple = "i686-pc-linux-gnu"
|
||||
deplibs = [ "c", "crtend" ]
|
||||
%struct.VDIR_ST = type { int, int, int, %struct.acl*, %struct.pfile*, %struct.vlink*, %struct.vlink*, %struct.vlink*, %struct.VDIR_ST*, %struct.VDIR_ST* }
|
||||
%struct.acl = type { int, sbyte*, sbyte*, sbyte*, %struct.restrict*, %struct.acl*, %struct.acl* }
|
||||
%struct.avalue = type { sbyte* }
|
||||
%struct.pattrib = type { sbyte, sbyte*, sbyte*, %struct.avalue, %struct.pattrib*, %struct.pattrib* }
|
||||
%struct.pfile = type { int, int, int, int, int, %struct.vlink*, %struct.vlink*, %struct.pattrib*, %struct.pfile*, %struct.pfile* }
|
||||
%struct.restrict = type { %struct.acl*, %struct.acl* }
|
||||
%struct.vlink = type { int, sbyte*, sbyte, int, sbyte*, %struct.vlink*, %struct.vlink*, sbyte*, sbyte*, sbyte*, sbyte*, int, int, %struct.acl*, int, int, sbyte*, %struct.pattrib*, %struct.pfile*, %struct.vlink*, %struct.vlink* }
|
||||
|
||||
implementation ; Functions:
|
||||
|
||||
void %vl_insert(%struct.vlink* %vl) {
|
||||
entry:
|
||||
%tmp91 = call int %vl_comp( ) ; <int> [#uses=2]
|
||||
%tmp93 = setgt int %tmp91, 0 ; <bool> [#uses=1]
|
||||
br bool %tmp93, label %cond_next84, label %bb94
|
||||
|
||||
cond_next84: ; preds = %entry
|
||||
ret void
|
||||
|
||||
bb94: ; preds = %entry
|
||||
%tmp96 = seteq int %tmp91, 0 ; <bool> [#uses=1]
|
||||
br bool %tmp96, label %cond_true97, label %cond_next203
|
||||
|
||||
cond_true97: ; preds = %bb94
|
||||
br bool false, label %cond_next105, label %cond_true102
|
||||
|
||||
cond_true102: ; preds = %cond_true97
|
||||
ret void
|
||||
|
||||
cond_next105: ; preds = %cond_true97
|
||||
%tmp110 = getelementptr %struct.vlink* %vl, int 0, uint 12 ; <int*> [#uses=1]
|
||||
%tmp111 = load int* %tmp110 ; <int> [#uses=1]
|
||||
%tmp129 = seteq int %tmp111, 0 ; <bool> [#uses=1]
|
||||
br bool %tmp129, label %cond_true130, label %cond_next133
|
||||
|
||||
cond_true130: ; preds = %cond_next105
|
||||
ret void
|
||||
|
||||
cond_next133: ; preds = %cond_next105
|
||||
ret void
|
||||
|
||||
cond_next203: ; preds = %bb94
|
||||
ret void
|
||||
}
|
||||
|
||||
declare int %vl_comp()
|
@ -103,7 +103,6 @@ void AddConfiguredTransformationPasses(PassManager &PM) {
|
||||
addPass(PM, createCFGSimplificationPass()); // Merge & remove BBs
|
||||
addPass(PM, createScalarReplAggregatesPass()); // Break up aggregate allocas
|
||||
addPass(PM, createInstructionCombiningPass()); // Combine silly seq's
|
||||
addPass(PM, createPredicateSimplifierPass()); // Canonicalize registers
|
||||
addPass(PM, createCondPropagationPass()); // Propagate conditionals
|
||||
|
||||
addPass(PM, createTailCallEliminationPass()); // Eliminate tail calls
|
||||
|
@ -252,7 +252,6 @@ int llvm::GenerateBytecode(Module *M, int StripLevel, bool Internalize,
|
||||
|
||||
// The IPO passes may leave cruft around. Clean up after them.
|
||||
addPass(Passes, createInstructionCombiningPass());
|
||||
addPass(Passes, createPredicateSimplifierPass());
|
||||
|
||||
addPass(Passes, createScalarReplAggregatesPass()); // Break up allocas
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user