1 ; RUN: opt -S -indvars < %s | FileCheck %s
3 ; Check that we replace signed comparisons between non-negative values with
4 ; unsigned comparisons if we can.
6 target datalayout = "n8:16:32:64"
8 define i32 @test_01(i32 %a, i32 %b, i32* %p) {
10 ; CHECK-LABEL: @test_01(
12 ; CHECK: %cmp1 = icmp ult i32 %iv, 100
13 ; CHECK: %cmp2 = icmp ult i32 %iv, 100
15 ; CHECK: %exitcond = icmp ne i32 %iv.next, 1000
21 %iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.be ]
22 %cmp1 = icmp slt i32 %iv, 100
23 br i1 %cmp1, label %b1, label %b2
26 store i32 %iv, i32* %p
34 %cmp2 = icmp ult i32 %iv, 100
35 br i1 %cmp2, label %b3, label %b4
38 store i32 %iv, i32* %p
46 %iv.next = add i32 %iv, 1
47 %cmp3 = icmp slt i32 %iv.next, 1000
48 br i1 %cmp3, label %loop.entry, label %exit
54 define i32 @test_02(i32 %a, i32 %b, i32* %p) {
56 ; CHECK-LABEL: @test_02(
58 ; CHECK: %cmp1 = icmp ugt i32 100, %iv
59 ; CHECK: %cmp2 = icmp ugt i32 100, %iv
61 ; CHECK: %exitcond = icmp ne i32 %iv.next, 1000
67 %iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.be ]
68 %cmp1 = icmp sgt i32 100, %iv
69 br i1 %cmp1, label %b1, label %b2
72 store i32 %iv, i32* %p
80 %cmp2 = icmp ugt i32 100, %iv
81 br i1 %cmp2, label %b3, label %b4
84 store i32 %iv, i32* %p
92 %iv.next = add i32 %iv, 1
93 %cmp3 = icmp sgt i32 1000, %iv.next
94 br i1 %cmp3, label %loop.entry, label %exit