blob: ba2b2fa83486065de560b1ec289e810944095ca3 [file] [log] [blame]
Dan Gohman0196dc52009-07-14 20:57:04 +00001; RUN: llvm-as < %s | opt -indvars | llvm-dis > %t
2; RUN: grep {icmp ugt i8\\\*} %t | count 1
3; RUN: grep {icmp sgt i8\\\*} %t | count 1
4
5target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
6
7 %struct.CKenCodeCodec = type <{ i8 }>
8
9define void @foo(i8* %str1Ptr, i8* %str2Ptr, i8* %inLastBytePtr) nounwind {
10entry:
11 %0 = icmp ult i8* %str2Ptr, %str1Ptr ; <i1> [#uses=1]
12 %str2Ptr_addr.0 = select i1 %0, i8* %str1Ptr, i8* %str2Ptr ; <i8*> [#uses=1]
13 br label %bb2
14
15bb2: ; preds = %bb2, %entry
16 %str2Ptr_addr.1 = phi i8* [ %str2Ptr_addr.0, %entry ], [ %1, %bb2 ] ; <i8*> [#uses=1]
17 %1 = getelementptr i8* %str2Ptr_addr.1, i64 1 ; <i8*> [#uses=2]
18 %2 = icmp ult i8* %1, %inLastBytePtr ; <i1> [#uses=0]
19 br i1 false, label %bb2, label %return
20
21return: ; preds = %bb2
22 ret void
23}
24
25define void @bar(i8* %str1Ptr, i64 %s, i8* %inLastBytePtr) nounwind {
26entry:
27 %str2Ptr = inttoptr i64 %s to i8*
28 %0 = icmp ult i8* %str2Ptr, %str1Ptr ; <i1> [#uses=1]
29 %str2Ptr_addr.0 = select i1 %0, i8* %str1Ptr, i8* %str2Ptr ; <i8*> [#uses=1]
30 br label %bb2
31
32bb2: ; preds = %bb2, %entry
33 %str2Ptr_addr.1 = phi i8* [ %str2Ptr_addr.0, %entry ], [ %1, %bb2 ] ; <i8*> [#uses=1]
34 %1 = getelementptr i8* %str2Ptr_addr.1, i64 1 ; <i8*> [#uses=2]
35 %2 = icmp ult i8* %1, %inLastBytePtr ; <i1> [#uses=0]
36 br i1 false, label %bb2, label %return
37
38return: ; preds = %bb2
39 ret void
40}
41
42define void @qux(i64 %t, i64 %s, i8* %inLastBytePtr) nounwind {
43entry:
44 %str1Ptr = inttoptr i64 %t to i8*
45 %str2Ptr = inttoptr i64 %s to i8*
46 %0 = icmp ult i8* %str2Ptr, %str1Ptr ; <i1> [#uses=1]
47 %str2Ptr_addr.0 = select i1 %0, i8* %str1Ptr, i8* %str2Ptr ; <i8*> [#uses=1]
48 br label %bb2
49
50bb2: ; preds = %bb2, %entry
51 %str2Ptr_addr.1 = phi i8* [ %str2Ptr_addr.0, %entry ], [ %1, %bb2 ] ; <i8*> [#uses=1]
52 %1 = getelementptr i8* %str2Ptr_addr.1, i64 1 ; <i8*> [#uses=2]
53 %2 = icmp ult i8* %1, %inLastBytePtr ; <i1> [#uses=0]
54 br i1 false, label %bb2, label %return
55
56return: ; preds = %bb2
57 ret void
58}
59
60define void @vor(i64 %t, i8* %str2Ptr, i8* %inLastBytePtr) nounwind {
61entry:
62 %str1Ptr = inttoptr i64 %t to i8*
63 %0 = icmp ult i8* %str2Ptr, %str1Ptr ; <i1> [#uses=1]
64 %str2Ptr_addr.0 = select i1 %0, i8* %str1Ptr, i8* %str2Ptr ; <i8*> [#uses=1]
65 br label %bb2
66
67bb2: ; preds = %bb2, %entry
68 %str2Ptr_addr.1 = phi i8* [ %str2Ptr_addr.0, %entry ], [ %1, %bb2 ] ; <i8*> [#uses=1]
69 %1 = getelementptr i8* %str2Ptr_addr.1, i64 1 ; <i8*> [#uses=2]
70 %2 = icmp ult i8* %1, %inLastBytePtr ; <i1> [#uses=0]
71 br i1 false, label %bb2, label %return
72
73return: ; preds = %bb2
74 ret void
75}
76
77define void @sfoo(i8* %str1Ptr, i8* %str2Ptr, i8* %inLastBytePtr) nounwind {
78entry:
79 %0 = icmp slt i8* %str2Ptr, %str1Ptr ; <i1> [#uses=1]
80 %str2Ptr_addr.0 = select i1 %0, i8* %str1Ptr, i8* %str2Ptr ; <i8*> [#uses=1]
81 br label %bb2
82
83bb2: ; preds = %bb2, %entry
84 %str2Ptr_addr.1 = phi i8* [ %str2Ptr_addr.0, %entry ], [ %1, %bb2 ] ; <i8*> [#uses=1]
85 %1 = getelementptr i8* %str2Ptr_addr.1, i64 1 ; <i8*> [#uses=2]
86 %2 = icmp slt i8* %1, %inLastBytePtr ; <i1> [#uses=0]
87 br i1 false, label %bb2, label %return
88
89return: ; preds = %bb2
90 ret void
91}
92
93define void @sbar(i8* %str1Ptr, i64 %s, i8* %inLastBytePtr) nounwind {
94entry:
95 %str2Ptr = inttoptr i64 %s to i8*
96 %0 = icmp slt i8* %str2Ptr, %str1Ptr ; <i1> [#uses=1]
97 %str2Ptr_addr.0 = select i1 %0, i8* %str1Ptr, i8* %str2Ptr ; <i8*> [#uses=1]
98 br label %bb2
99
100bb2: ; preds = %bb2, %entry
101 %str2Ptr_addr.1 = phi i8* [ %str2Ptr_addr.0, %entry ], [ %1, %bb2 ] ; <i8*> [#uses=1]
102 %1 = getelementptr i8* %str2Ptr_addr.1, i64 1 ; <i8*> [#uses=2]
103 %2 = icmp slt i8* %1, %inLastBytePtr ; <i1> [#uses=0]
104 br i1 false, label %bb2, label %return
105
106return: ; preds = %bb2
107 ret void
108}
109
110define void @squx(i64 %t, i64 %s, i8* %inLastBytePtr) nounwind {
111entry:
112 %str1Ptr = inttoptr i64 %t to i8*
113 %str2Ptr = inttoptr i64 %s to i8*
114 %0 = icmp slt i8* %str2Ptr, %str1Ptr ; <i1> [#uses=1]
115 %str2Ptr_addr.0 = select i1 %0, i8* %str1Ptr, i8* %str2Ptr ; <i8*> [#uses=1]
116 br label %bb2
117
118bb2: ; preds = %bb2, %entry
119 %str2Ptr_addr.1 = phi i8* [ %str2Ptr_addr.0, %entry ], [ %1, %bb2 ] ; <i8*> [#uses=1]
120 %1 = getelementptr i8* %str2Ptr_addr.1, i64 1 ; <i8*> [#uses=2]
121 %2 = icmp slt i8* %1, %inLastBytePtr ; <i1> [#uses=0]
122 br i1 false, label %bb2, label %return
123
124return: ; preds = %bb2
125 ret void
126}
127
128define void @svor(i64 %t, i8* %str2Ptr, i8* %inLastBytePtr) nounwind {
129entry:
130 %str1Ptr = inttoptr i64 %t to i8*
131 %0 = icmp slt i8* %str2Ptr, %str1Ptr ; <i1> [#uses=1]
132 %str2Ptr_addr.0 = select i1 %0, i8* %str1Ptr, i8* %str2Ptr ; <i8*> [#uses=1]
133 br label %bb2
134
135bb2: ; preds = %bb2, %entry
136 %str2Ptr_addr.1 = phi i8* [ %str2Ptr_addr.0, %entry ], [ %1, %bb2 ] ; <i8*> [#uses=1]
137 %1 = getelementptr i8* %str2Ptr_addr.1, i64 1 ; <i8*> [#uses=2]
138 %2 = icmp slt i8* %1, %inLastBytePtr ; <i1> [#uses=0]
139 br i1 false, label %bb2, label %return
140
141return: ; preds = %bb2
142 ret void
143}
144
145