~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/Transforms/InstSimplify/maxmin.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 -instsimplify -S | FileCheck %s
 
2
 
 
3
define i1 @max1(i32 %x, i32 %y) {
 
4
; CHECK-LABEL: @max1(
 
5
  %c = icmp sgt i32 %x, %y
 
6
  %m = select i1 %c, i32 %x, i32 %y
 
7
  %r = icmp slt i32 %m, %x
 
8
  ret i1 %r
 
9
; CHECK: ret i1 false
 
10
}
 
11
 
 
12
define i1 @max2(i32 %x, i32 %y) {
 
13
; CHECK-LABEL: @max2(
 
14
  %c = icmp sge i32 %x, %y
 
15
  %m = select i1 %c, i32 %x, i32 %y
 
16
  %r = icmp sge i32 %m, %x
 
17
  ret i1 %r
 
18
; CHECK: ret i1 true
 
19
}
 
20
 
 
21
define i1 @max3(i32 %x, i32 %y) {
 
22
; CHECK-LABEL: @max3(
 
23
  %c = icmp ugt i32 %x, %y
 
24
  %m = select i1 %c, i32 %x, i32 %y
 
25
  %r = icmp ult i32 %m, %x
 
26
  ret i1 %r
 
27
; CHECK: ret i1 false
 
28
}
 
29
 
 
30
define i1 @max4(i32 %x, i32 %y) {
 
31
; CHECK-LABEL: @max4(
 
32
  %c = icmp uge i32 %x, %y
 
33
  %m = select i1 %c, i32 %x, i32 %y
 
34
  %r = icmp uge i32 %m, %x
 
35
  ret i1 %r
 
36
; CHECK: ret i1 true
 
37
}
 
38
 
 
39
define i1 @max5(i32 %x, i32 %y) {
 
40
; CHECK-LABEL: @max5(
 
41
  %c = icmp sgt i32 %x, %y
 
42
  %m = select i1 %c, i32 %x, i32 %y
 
43
  %r = icmp sgt i32 %x, %m
 
44
  ret i1 %r
 
45
; CHECK: ret i1 false
 
46
}
 
47
 
 
48
define i1 @max6(i32 %x, i32 %y) {
 
49
; CHECK-LABEL: @max6(
 
50
  %c = icmp sge i32 %x, %y
 
51
  %m = select i1 %c, i32 %x, i32 %y
 
52
  %r = icmp sle i32 %x, %m
 
53
  ret i1 %r
 
54
; CHECK: ret i1 true
 
55
}
 
56
 
 
57
define i1 @max7(i32 %x, i32 %y) {
 
58
; CHECK-LABEL: @max7(
 
59
  %c = icmp ugt i32 %x, %y
 
60
  %m = select i1 %c, i32 %x, i32 %y
 
61
  %r = icmp ugt i32 %x, %m
 
62
  ret i1 %r
 
63
; CHECK: ret i1 false
 
64
}
 
65
 
 
66
define i1 @max8(i32 %x, i32 %y) {
 
67
; CHECK-LABEL: @max8(
 
68
  %c = icmp uge i32 %x, %y
 
69
  %m = select i1 %c, i32 %x, i32 %y
 
70
  %r = icmp ule i32 %x, %m
 
71
  ret i1 %r
 
72
; CHECK: ret i1 true
 
73
}
 
74
 
 
75
define i1 @min1(i32 %x, i32 %y) {
 
76
; CHECK-LABEL: @min1(
 
77
  %c = icmp sgt i32 %x, %y
 
78
  %m = select i1 %c, i32 %y, i32 %x
 
79
  %r = icmp sgt i32 %m, %x
 
80
  ret i1 %r
 
81
; CHECK: ret i1 false
 
82
}
 
83
 
 
84
define i1 @min2(i32 %x, i32 %y) {
 
85
; CHECK-LABEL: @min2(
 
86
  %c = icmp sge i32 %x, %y
 
87
  %m = select i1 %c, i32 %y, i32 %x
 
88
  %r = icmp sle i32 %m, %x
 
89
  ret i1 %r
 
90
; CHECK: ret i1 true
 
91
}
 
92
 
 
93
define i1 @min3(i32 %x, i32 %y) {
 
94
; CHECK-LABEL: @min3(
 
95
  %c = icmp ugt i32 %x, %y
 
96
  %m = select i1 %c, i32 %y, i32 %x
 
97
  %r = icmp ugt i32 %m, %x
 
98
  ret i1 %r
 
99
; CHECK: ret i1 false
 
100
}
 
101
 
 
102
define i1 @min4(i32 %x, i32 %y) {
 
103
; CHECK-LABEL: @min4(
 
104
  %c = icmp uge i32 %x, %y
 
105
  %m = select i1 %c, i32 %y, i32 %x
 
106
  %r = icmp ule i32 %m, %x
 
107
  ret i1 %r
 
108
; CHECK: ret i1 true
 
109
}
 
110
 
 
111
define i1 @min5(i32 %x, i32 %y) {
 
112
; CHECK-LABEL: @min5(
 
113
  %c = icmp sgt i32 %x, %y
 
114
  %m = select i1 %c, i32 %y, i32 %x
 
115
  %r = icmp slt i32 %x, %m
 
116
  ret i1 %r
 
117
; CHECK: ret i1 false
 
118
}
 
119
 
 
120
define i1 @min6(i32 %x, i32 %y) {
 
121
; CHECK-LABEL: @min6(
 
122
  %c = icmp sge i32 %x, %y
 
123
  %m = select i1 %c, i32 %y, i32 %x
 
124
  %r = icmp sge i32 %x, %m
 
125
  ret i1 %r
 
126
; CHECK: ret i1 true
 
127
}
 
128
 
 
129
define i1 @min7(i32 %x, i32 %y) {
 
130
; CHECK-LABEL: @min7(
 
131
  %c = icmp ugt i32 %x, %y
 
132
  %m = select i1 %c, i32 %y, i32 %x
 
133
  %r = icmp ult i32 %x, %m
 
134
  ret i1 %r
 
135
; CHECK: ret i1 false
 
136
}
 
137
 
 
138
define i1 @min8(i32 %x, i32 %y) {
 
139
; CHECK-LABEL: @min8(
 
140
  %c = icmp uge i32 %x, %y
 
141
  %m = select i1 %c, i32 %y, i32 %x
 
142
  %r = icmp uge i32 %x, %m
 
143
  ret i1 %r
 
144
; CHECK: ret i1 true
 
145
}
 
146
 
 
147
define i1 @maxmin1(i32 %x, i32 %y, i32 %z) {
 
148
; CHECK-LABEL: @maxmin1(
 
149
  %c1 = icmp sge i32 %x, %y
 
150
  %max = select i1 %c1, i32 %x, i32 %y
 
151
  %c2 = icmp sge i32 %x, %z
 
152
  %min = select i1 %c2, i32 %z, i32 %x
 
153
  %c = icmp sge i32 %max, %min
 
154
  ret i1 %c
 
155
; CHECK: ret i1 true
 
156
}
 
157
 
 
158
define i1 @maxmin2(i32 %x, i32 %y, i32 %z) {
 
159
; CHECK-LABEL: @maxmin2(
 
160
  %c1 = icmp sge i32 %x, %y
 
161
  %max = select i1 %c1, i32 %x, i32 %y
 
162
  %c2 = icmp sge i32 %x, %z
 
163
  %min = select i1 %c2, i32 %z, i32 %x
 
164
  %c = icmp sgt i32 %min, %max
 
165
  ret i1 %c
 
166
; CHECK: ret i1 false
 
167
}
 
168
 
 
169
define i1 @maxmin3(i32 %x, i32 %y, i32 %z) {
 
170
; CHECK-LABEL: @maxmin3(
 
171
  %c1 = icmp sge i32 %x, %y
 
172
  %max = select i1 %c1, i32 %x, i32 %y
 
173
  %c2 = icmp sge i32 %x, %z
 
174
  %min = select i1 %c2, i32 %z, i32 %x
 
175
  %c = icmp sle i32 %min, %max
 
176
  ret i1 %c
 
177
; CHECK: ret i1 true
 
178
}
 
179
 
 
180
define i1 @maxmin4(i32 %x, i32 %y, i32 %z) {
 
181
; CHECK-LABEL: @maxmin4(
 
182
  %c1 = icmp sge i32 %x, %y
 
183
  %max = select i1 %c1, i32 %x, i32 %y
 
184
  %c2 = icmp sge i32 %x, %z
 
185
  %min = select i1 %c2, i32 %z, i32 %x
 
186
  %c = icmp slt i32 %max, %min
 
187
  ret i1 %c
 
188
; CHECK: ret i1 false
 
189
}
 
190
 
 
191
define i1 @maxmin5(i32 %x, i32 %y, i32 %z) {
 
192
; CHECK-LABEL: @maxmin5(
 
193
  %c1 = icmp uge i32 %x, %y
 
194
  %max = select i1 %c1, i32 %x, i32 %y
 
195
  %c2 = icmp uge i32 %x, %z
 
196
  %min = select i1 %c2, i32 %z, i32 %x
 
197
  %c = icmp uge i32 %max, %min
 
198
  ret i1 %c
 
199
; CHECK: ret i1 true
 
200
}
 
201
 
 
202
define i1 @maxmin6(i32 %x, i32 %y, i32 %z) {
 
203
; CHECK-LABEL: @maxmin6(
 
204
  %c1 = icmp uge i32 %x, %y
 
205
  %max = select i1 %c1, i32 %x, i32 %y
 
206
  %c2 = icmp uge i32 %x, %z
 
207
  %min = select i1 %c2, i32 %z, i32 %x
 
208
  %c = icmp ugt i32 %min, %max
 
209
  ret i1 %c
 
210
; CHECK: ret i1 false
 
211
}
 
212
 
 
213
define i1 @maxmin7(i32 %x, i32 %y, i32 %z) {
 
214
; CHECK-LABEL: @maxmin7(
 
215
  %c1 = icmp uge i32 %x, %y
 
216
  %max = select i1 %c1, i32 %x, i32 %y
 
217
  %c2 = icmp uge i32 %x, %z
 
218
  %min = select i1 %c2, i32 %z, i32 %x
 
219
  %c = icmp ule i32 %min, %max
 
220
  ret i1 %c
 
221
; CHECK: ret i1 true
 
222
}
 
223
 
 
224
define i1 @maxmin8(i32 %x, i32 %y, i32 %z) {
 
225
; CHECK-LABEL: @maxmin8(
 
226
  %c1 = icmp uge i32 %x, %y
 
227
  %max = select i1 %c1, i32 %x, i32 %y
 
228
  %c2 = icmp uge i32 %x, %z
 
229
  %min = select i1 %c2, i32 %z, i32 %x
 
230
  %c = icmp ult i32 %max, %min
 
231
  ret i1 %c
 
232
; CHECK: ret i1 false
 
233
}
 
234
 
 
235
define i1 @eqcmp1(i32 %x, i32 %y) {
 
236
; CHECK-LABEL: @eqcmp1(
 
237
  %c = icmp sge i32 %x, %y
 
238
  %max = select i1 %c, i32 %x, i32 %y
 
239
  %r = icmp eq i32 %max, %x
 
240
  ret i1 %r
 
241
; CHECK: ret i1 %c
 
242
}
 
243
 
 
244
define i1 @eqcmp2(i32 %x, i32 %y) {
 
245
; CHECK-LABEL: @eqcmp2(
 
246
  %c = icmp sge i32 %x, %y
 
247
  %max = select i1 %c, i32 %x, i32 %y
 
248
  %r = icmp eq i32 %x, %max
 
249
  ret i1 %r
 
250
; CHECK: ret i1 %c
 
251
}
 
252
 
 
253
define i1 @eqcmp3(i32 %x, i32 %y) {
 
254
; CHECK-LABEL: @eqcmp3(
 
255
  %c = icmp uge i32 %x, %y
 
256
  %max = select i1 %c, i32 %x, i32 %y
 
257
  %r = icmp eq i32 %max, %x
 
258
  ret i1 %r
 
259
; CHECK: ret i1 %c
 
260
}
 
261
 
 
262
define i1 @eqcmp4(i32 %x, i32 %y) {
 
263
; CHECK-LABEL: @eqcmp4(
 
264
  %c = icmp uge i32 %x, %y
 
265
  %max = select i1 %c, i32 %x, i32 %y
 
266
  %r = icmp eq i32 %x, %max
 
267
  ret i1 %r
 
268
; CHECK: ret i1 %c
 
269
}