Clang] Fix expansion of response files in -Wp after integrated-cc1 change
[llvm-project.git] / llvm / test / Analysis / ScalarEvolution / range_nw_flag.ll
blob0a0b5fb5eb8c6b9c71d6027cfc0b002202485c65
1 ; RUN: opt < %s -S -analyze -scalar-evolution | FileCheck %s
3 ; copied from flags-from-poison.ll
4 ; CHECK-LABEL: @test-add-nuw
5 ; CHECK: -->  {(1 + %offset)<nuw>,+,1}<nuw><%loop> U: [1,0) S: [1,0)
6 define void @test-add-nuw(float* %input, i32 %offset, i32 %numIterations) {
7 entry:
8   br label %loop
9 loop:
10   %i = phi i32 [ %nexti, %loop ], [ 0, %entry ]
11   %nexti = add nuw i32 %i, 1
12   %index32 = add nuw i32 %nexti, %offset
13   %ptr = getelementptr inbounds float, float* %input, i32 %index32
14   %f = load float, float* %ptr, align 4
15   %exitcond = icmp eq i32 %nexti, %numIterations
16   br i1 %exitcond, label %exit, label %loop
18 exit:
19   ret void
22 ; CHECK-LABEL: @test-addrec-nuw
23 ; CHECK: -->  {(1 + (10 smax %offset))<nuw>,+,1}<nuw><%loop> U: [11,0) S: [11,0)
24 define void @test-addrec-nuw(float* %input, i32 %offset, i32 %numIterations) {
25 entry:
26   %cmp = icmp sgt i32 %offset, 10
27   %min.10 = select i1 %cmp, i32 %offset, i32 10
28   br label %loop
29 loop:
30   %i = phi i32 [ %nexti, %loop ], [ 0, %entry ]
31   %nexti = add nuw i32 %i, 1
32   %index32 = add nuw i32 %nexti, %min.10
33   %ptr = getelementptr inbounds float, float* %input, i32 %index32
34   %f = load float, float* %ptr, align 4
35   %exitcond = icmp eq i32 %nexti, %numIterations
36   br i1 %exitcond, label %exit, label %loop
38 exit:
39   ret void
42 ; CHECK-LABEL: @test-addrec-nsw-start-neg-strip-neg
43 ; CHECK: -->  {(-1 + (-10 smin %offset))<nsw>,+,-1}<nsw><%loop> U: [-2147483648,-10) S: [-2147483648,-10)
44 define void @test-addrec-nsw-start-neg-strip-neg(float* %input, i32 %offset, i32 %numIterations) {
45 entry:
46   %cmp = icmp slt i32 %offset, -10
47   %max = select i1 %cmp, i32 %offset, i32 -10
48   br label %loop
49 loop:
50   %i = phi i32 [ %nexti, %loop ], [ 0, %entry ]
51   %nexti = add nsw i32 %i, -1
52   %index32 = add nsw i32 %nexti, %max
53   %ptr = getelementptr inbounds float, float* %input, i32 %index32
54   %f = load float, float* %ptr, align 4
55   %exitcond = icmp eq i32 %nexti, %numIterations
56   br i1 %exitcond, label %exit, label %loop
58 exit:
59   ret void
62 ; CHECK-LABEL: @test-addrec-nsw-start-pos-strip-neg
63 ; CHECK: -->  {(-1 + (10 smin %offset))<nsw>,+,-1}<nsw><%loop> U: [-2147483648,10) S: [-2147483648,10)
64 define void @test-addrec-nsw-start-pos-strip-neg(float* %input, i32 %offset, i32 %numIterations) {
65 entry:
66   %cmp = icmp slt i32 %offset, 10
67   %max = select i1 %cmp, i32 %offset, i32  10
68   br label %loop
69 loop:
70   %i = phi i32 [ %nexti, %loop ], [ 0, %entry ]
71   %nexti = add nsw i32 %i, -1
72   %index32 = add nsw i32 %nexti, %max
73   %ptr = getelementptr inbounds float, float* %input, i32 %index32
74   %f = load float, float* %ptr, align 4
75   %exitcond = icmp eq i32 %nexti, %numIterations
76   br i1 %exitcond, label %exit, label %loop
78 exit:
79   ret void
82 ; CHECK-LABEL: @test-addrec-nsw-start-pos-strip-pos
83 ; CHECK: -->  {(1 + (10 smax %offset))<nuw><nsw>,+,1}<nuw><nsw><%loop> U: [11,-2147483648) S: [11,-2147483648)
84 define void @test-addrec-nsw-start-pos-strip-pos(float* %input, i32 %offset, i32 %numIterations) {
85 entry:
86   %cmp = icmp sgt i32 %offset, 10
87   %min = select i1 %cmp, i32 %offset, i32  10
88   br label %loop
89 loop:
90   %i = phi i32 [ %nexti, %loop ], [ 0, %entry ]
91   %nexti = add nsw i32 %i, 1
92   %index32 = add nsw i32 %nexti, %min
93   %ptr = getelementptr inbounds float, float* %input, i32 %index32
94   %f = load float, float* %ptr, align 4
95   %exitcond = icmp eq i32 %nexti, %numIterations
96   br i1 %exitcond, label %exit, label %loop
98 exit:
99   ret void
102 ; CHECK-LABEL: @test-addrec-nsw-start-neg-strip-pos
103 ; CHECK: -->  {(1 + (-10 smax %offset))<nsw>,+,1}<nsw><%loop> U: [-9,-2147483648) S: [-9,-2147483648)
104 define void @test-addrec-nsw-start-neg-strip-pos(float* %input, i32 %offset, i32 %numIterations) {
105 entry:
106   %cmp = icmp sgt i32 %offset, -10
107   %min = select i1 %cmp, i32 %offset, i32  -10
108   br label %loop
109 loop:
110   %i = phi i32 [ %nexti, %loop ], [ 0, %entry ]
111   %nexti = add nsw i32 %i, 1
112   %index32 = add nsw i32 %nexti, %min
113   %ptr = getelementptr inbounds float, float* %input, i32 %index32
114   %f = load float, float* %ptr, align 4
115   %exitcond = icmp eq i32 %nexti, %numIterations
116   br i1 %exitcond, label %exit, label %loop
118 exit:
119   ret void