~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/Transforms/CorrelatedValuePropagation/select.ll

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2015-07-15 17:51:08 UTC
  • Revision ID: package-import@ubuntu.com-20150715175108-l8mynwovkx4zx697
Tags: upstream-3.7~+rc2
ImportĀ upstreamĀ versionĀ 3.7~+rc2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; RUN: opt < %s -correlated-propagation -S | FileCheck %s
 
2
 
 
3
; CHECK-LABEL: @simple(
 
4
define i8 @simple(i1) {
 
5
entry:
 
6
  %s = select i1 %0, i8 0, i8 1
 
7
  br i1 %0, label %then, label %else
 
8
 
 
9
then:
 
10
; CHECK: ret i8 0
 
11
  %a = phi i8 [ %s, %entry ]
 
12
  ret i8 %a
 
13
 
 
14
else:
 
15
; CHECK: ret i8 1
 
16
  %b = phi i8 [ %s, %entry ]
 
17
  ret i8 %b
 
18
}
 
19
 
 
20
; CHECK-LABEL: @loop(
 
21
define void @loop(i32) {
 
22
entry:
 
23
  br label %loop
 
24
 
 
25
loop:
 
26
  %idx = phi i32 [ %0, %entry ], [ %sel, %loop ]
 
27
; CHECK: %idx = phi i32 [ %0, %entry ], [ %2, %loop ]
 
28
  %1 = icmp eq i32 %idx, 0
 
29
  %2 = add i32 %idx, -1
 
30
  %sel = select i1 %1, i32 0, i32 %2
 
31
  br i1 %1, label %out, label %loop
 
32
 
 
33
out:
 
34
  ret void
 
35
}
 
36
 
 
37
; CHECK-LABEL: @not_correlated(
 
38
define i8 @not_correlated(i1, i1) {
 
39
entry:
 
40
  %s = select i1 %0, i8 0, i8 1
 
41
  br i1 %1, label %then, label %else
 
42
 
 
43
then:
 
44
; CHECK: ret i8 %s
 
45
  %a = phi i8 [ %s, %entry ]
 
46
  ret i8 %a
 
47
 
 
48
else:
 
49
; CHECK: ret i8 %s
 
50
  %b = phi i8 [ %s, %entry ]
 
51
  ret i8 %b
 
52
}
 
53
 
 
54
@c = global i32 0, align 4
 
55
@b = global i32 0, align 4
 
56
 
 
57
; CHECK-LABEL: @PR23752(
 
58
define i32 @PR23752() {
 
59
entry:
 
60
  br label %for.body
 
61
 
 
62
for.body:
 
63
  %phi = phi i32 [ 0, %entry ], [ %sel, %for.body ]
 
64
  %sel = select i1 icmp sgt (i32* @b, i32* @c), i32 %phi, i32 1
 
65
  %cmp = icmp ne i32 %sel, 1
 
66
  br i1 %cmp, label %for.body, label %if.end
 
67
 
 
68
; CHECK:      %[[sel:.*]] = select i1 icmp sgt (i32* @b, i32* @c), i32 0, i32 1
 
69
; CHECK-NEXT: %[[cmp:.*]] = icmp ne i32 %[[sel]], 1
 
70
; CHECK-NEXT: br i1 %[[cmp]]
 
71
 
 
72
if.end:
 
73
  ret i32 %sel
 
74
; CHECK: ret i32 %[[sel]]
 
75
}