1 ; 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
5 target 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"
7 %struct.CKenCodeCodec = type <{ i8 }>
9 define void @foo(i8* %str1Ptr, i8* %str2Ptr, i8* %inLastBytePtr) nounwind {
11 %0 = icmp ult i8* %str2Ptr, %str1Ptr ; <i1> [#uses=1]
12 %str2Ptr_addr.0 = select i1 %0, i8* %str1Ptr, i8* %str2Ptr ; <i8*> [#uses=1]
15 bb2: ; 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
21 return: ; preds = %bb2
25 define void @bar(i8* %str1Ptr, i64 %s, i8* %inLastBytePtr) nounwind {
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]
32 bb2: ; 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
38 return: ; preds = %bb2
42 define void @qux(i64 %t, i64 %s, i8* %inLastBytePtr) nounwind {
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]
50 bb2: ; 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
56 return: ; preds = %bb2
60 define void @vor(i64 %t, i8* %str2Ptr, i8* %inLastBytePtr) nounwind {
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]
67 bb2: ; 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
73 return: ; preds = %bb2
77 define void @sfoo(i8* %str1Ptr, i8* %str2Ptr, i8* %inLastBytePtr) nounwind {
79 %0 = icmp slt i8* %str2Ptr, %str1Ptr ; <i1> [#uses=1]
80 %str2Ptr_addr.0 = select i1 %0, i8* %str1Ptr, i8* %str2Ptr ; <i8*> [#uses=1]
83 bb2: ; 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
89 return: ; preds = %bb2
93 define void @sbar(i8* %str1Ptr, i64 %s, i8* %inLastBytePtr) nounwind {
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]
100 bb2: ; 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
106 return: ; preds = %bb2
110 define void @squx(i64 %t, i64 %s, i8* %inLastBytePtr) nounwind {
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]
118 bb2: ; 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
124 return: ; preds = %bb2
128 define void @svor(i64 %t, i8* %str2Ptr, i8* %inLastBytePtr) nounwind {
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]
135 bb2: ; 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
141 return: ; preds = %bb2