Changes in directory llvm/test/Regression/Transforms/PredicateSimplifier:
2006-08-02-Switch.ll added (r1.1) predsimplify.ll updated: 1.1 -> 1.2 --- Log message: Improve handling of SelectInst. Reorder operations to remove duplicated work. Fix to leave floating-point types out of the optimization. Add tests to predsimplify.ll for SwitchInst and SelectInst handling. --- Diffs of the changes: (+185 -1) 2006-08-02-Switch.ll | 22 ++++++ predsimplify.ll | 164 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 185 insertions(+), 1 deletion(-) Index: llvm/test/Regression/Transforms/PredicateSimplifier/2006-08-02-Switch.ll diff -c /dev/null llvm/test/Regression/Transforms/PredicateSimplifier/2006-08-02-Switch.ll:1.1 *** /dev/null Sat Sep 2 14:40:48 2006 --- llvm/test/Regression/Transforms/PredicateSimplifier/2006-08-02-Switch.ll Sat Sep 2 14:40:38 2006 *************** *** 0 **** --- 1,22 ---- + ; RUN: llvm-as < %s | opt -predsimplify -disable-output + + fastcc void %_ov_splice(int %n1, int %n2, int %ch2) { + entry: + %tmp = setgt int %n1, %n2 ; <bool> [#uses=1] + %n.0 = select bool %tmp, int %n2, int %n1 ; <int> [#uses=1] + %tmp104 = setlt int 0, %ch2 ; <bool> [#uses=1] + br bool %tmp104, label %cond_true105, label %return + + cond_true95: ; preds = %cond_true105 + ret void + + bb98: ; preds = %cond_true105 + ret void + + cond_true105: ; preds = %entry + %tmp94 = setgt int %n.0, 0 ; <bool> [#uses=1] + br bool %tmp94, label %cond_true95, label %bb98 + + return: ; preds = %entry + ret void + } Index: llvm/test/Regression/Transforms/PredicateSimplifier/predsimplify.ll diff -u llvm/test/Regression/Transforms/PredicateSimplifier/predsimplify.ll:1.1 llvm/test/Regression/Transforms/PredicateSimplifier/predsimplify.ll:1.2 --- llvm/test/Regression/Transforms/PredicateSimplifier/predsimplify.ll:1.1 Mon Aug 28 17:44:55 2006 +++ llvm/test/Regression/Transforms/PredicateSimplifier/predsimplify.ll Sat Sep 2 14:40:38 2006 @@ -1,4 +1,5 @@ -; RUN: llvm-as < %s | opt -predsimplify -instcombine -simplifycfg | llvm-dis | grep -v declare | not grep fail +; RUN: llvm-as < %s | opt -predsimplify -instcombine -simplifycfg | llvm-dis | grep -v declare | not grep fail && +; RUN: llvm-as < %s | opt -predsimplify -instcombine -simplifycfg | llvm-dis | grep -v declare | grep pass | wc -l | grep 3 void %test1(int %x) { entry: @@ -124,6 +125,167 @@ ret void } +void %test9(int %y, int %z) { +entry: + %x = add int %y, %z + %A = seteq int %y, 3 + %B = seteq int %z, 5 + %C = and bool %A, %B + br bool %C, label %cond_true, label %return + +cond_true: + %D = seteq int %x, 8 + br bool %D, label %then, label %oops + +then: + call void (...)* %pass( ) + ret void + +oops: + call void (...)* %fail( ) + ret void + +return: + ret void +} + +void %switch1(int %x) { +entry: + %A = seteq int %x, 10 + br bool %A, label %return, label %cond_false + +cond_false: + switch int %x, label %return [ + int 9, label %then1 + int 10, label %then2 + ] + +then1: + call void (...)* %pass( ) + ret void + +then2: + call void (...)* %fail( ) + ret void + +return: + ret void +} + +void %switch2(int %x) { +entry: + %A = seteq int %x, 10 + br bool %A, label %return, label %cond_false + +cond_false: + switch int %x, label %return [ + int 8, label %then1 + int 9, label %then1 + int 10, label %then1 + ] + +then1: + %B = setne int %x, 8 + br bool %B, label %then2, label %return + +then2: + call void (...)* %pass( ) + ret void + +return: + ret void +} + +void %switch3(int %x) { +entry: + %A = seteq int %x, 10 + br bool %A, label %return, label %cond_false + +cond_false: + switch int %x, label %return [ + int 9, label %then1 + int 10, label %then1 + ] + +then1: + %B = seteq int %x, 9 + br bool %B, label %return, label %oops + +oops: + call void (...)* %fail( ) + ret void + +return: + ret void +} + +void %switch4(int %x) { +entry: + %A = seteq int %x, 10 + br bool %A, label %then1, label %cond_false + +cond_false: + switch int %x, label %default [ + int 9, label %then1 + int 10, label %then2 + ] + +then1: + ret void + +then2: + ret void + +default: + %B = seteq int %x, 9 + br bool %B, label %oops, label %then1 + +oops: + call void (...)* %fail( ) + ret void +} + +void %select1(int %x) { +entry: + %A = seteq int %x, 10 + %B = select bool %A, int 1, int 2 + %C = seteq int %B, 1 + br bool %C, label %then, label %else + +then: + br bool %A, label %return, label %oops + +else: + br bool %A, label %oops, label %return + +oops: + call void (...)* %fail( ) + ret void + +return: + ret void +} + +void %select2(int %x) { +entry: + %A = seteq int %x, 10 + %B = select bool %A, int 1, int 2 + %C = seteq int %B, 1 + br bool %A, label %then, label %else + +then: + br bool %C, label %return, label %oops + +else: + br bool %C, label %oops, label %return + +oops: + call void (...)* %fail( ) + ret void + +return: + ret void +} declare void %fail(...) _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits