Add ExtractValue instruction to SimplifyCFG's ComputeSpeculationCost
[oota-llvm.git] / test / Transforms / SimplifyCFG / sink-common-code.ll
1 ; RUN: opt < %s -simplifycfg -S | FileCheck %s
2
3 define zeroext i1 @test1(i1 zeroext %flag, i32 %blksA, i32 %blksB, i32 %nblks) {
4 entry:
5   br i1 %flag, label %if.then, label %if.else
6
7 ; CHECK: test1
8 ; CHECK: add
9 ; CHECK: select
10 ; CHECK: icmp
11 ; CHECK-NOT: br
12 if.then:
13   %cmp = icmp uge i32 %blksA, %nblks
14   %frombool1 = zext i1 %cmp to i8
15   br label %if.end
16
17 if.else:
18   %add = add i32 %nblks, %blksB
19   %cmp2 = icmp ule i32 %add, %blksA
20   %frombool3 = zext i1 %cmp2 to i8
21   br label %if.end
22
23 if.end:
24   %obeys.0 = phi i8 [ %frombool1, %if.then ], [ %frombool3, %if.else ]
25   %tobool4 = icmp ne i8 %obeys.0, 0
26   ret i1 %tobool4
27 }
28
29 define zeroext i1 @test2(i1 zeroext %flag, i32 %blksA, i32 %blksB, i32 %nblks) {
30 entry:
31   br i1 %flag, label %if.then, label %if.else
32
33 ; CHECK: test2
34 ; CHECK: add
35 ; CHECK: select
36 ; CHECK: icmp
37 ; CHECK-NOT: br
38 if.then:
39   %cmp = icmp uge i32 %blksA, %nblks
40   %frombool1 = zext i1 %cmp to i8
41   br label %if.end
42
43 if.else:
44   %add = add i32 %nblks, %blksB
45   %cmp2 = icmp uge i32 %blksA, %add
46   %frombool3 = zext i1 %cmp2 to i8
47   br label %if.end
48
49 if.end:
50   %obeys.0 = phi i8 [ %frombool1, %if.then ], [ %frombool3, %if.else ]
51   %tobool4 = icmp ne i8 %obeys.0, 0
52   ret i1 %tobool4
53 }