Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Side by Side Diff: tests_lit/reader_tests/compare.ll

Issue 543793003: Add icmp and fcmp instructions to Subzero bitcode reader. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix nit. Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/PNaClTranslator.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 ; Test if we can read compare instructions.
2
3 ; RUN: llvm-as < %s | pnacl-freeze \
4 ; RUN: | %llvm2ice -notranslate -verbose=inst -build-on-read \
5 ; RUN: -allow-pnacl-reader-error-recovery \
6 ; RUN: | FileCheck %s
7
8 define i1 @IcmpI1(i32 %p1, i32 %p2) {
9 %a1 = trunc i32 %p1 to i1
10 %a2 = trunc i32 %p2 to i1
11 %veq = icmp eq i1 %a1, %a2
12 %vne = icmp ne i1 %a1, %a2
13 %vugt = icmp ugt i1 %a1, %a2
14 %vuge = icmp uge i1 %a1, %a2
15 %vult = icmp ult i1 %a1, %a2
16 %vule = icmp ule i1 %a1, %a2
17 %vsgt = icmp sgt i1 %a1, %a2
18 %vsge = icmp sge i1 %a1, %a2
19 %vslt = icmp slt i1 %a1, %a2
20 %vsle = icmp sle i1 %a1, %a2
21 ret i1 %veq
22 }
23
24 ; CHECK: define i1 @IcmpI1(i32 %__0, i32 %__1) {
25 ; CHECK-NEXT: __0:
26 ; CHECK-NEXT: %__2 = trunc i32 %__0 to i1
27 ; CHECK-NEXT: %__3 = trunc i32 %__1 to i1
28 ; CHECK-NEXT: %__4 = icmp eq i1 %__2, %__3
29 ; CHECK-NEXT: %__5 = icmp ne i1 %__2, %__3
30 ; CHECK-NEXT: %__6 = icmp ugt i1 %__2, %__3
31 ; CHECK-NEXT: %__7 = icmp uge i1 %__2, %__3
32 ; CHECK-NEXT: %__8 = icmp ult i1 %__2, %__3
33 ; CHECK-NEXT: %__9 = icmp ule i1 %__2, %__3
34 ; CHECK-NEXT: %__10 = icmp sgt i1 %__2, %__3
35 ; CHECK-NEXT: %__11 = icmp sge i1 %__2, %__3
36 ; CHECK-NEXT: %__12 = icmp slt i1 %__2, %__3
37 ; CHECK-NEXT: %__13 = icmp sle i1 %__2, %__3
38 ; CHECK-NEXT: ret i1 %__4
39 ; CHECK-NEXT: }
40
41 define i1 @IcmpI8(i32 %p1, i32 %p2) {
42 %a1 = trunc i32 %p1 to i8
43 %a2 = trunc i32 %p2 to i8
44 %veq = icmp eq i8 %a1, %a2
45 %vne = icmp ne i8 %a1, %a2
46 %vugt = icmp ugt i8 %a1, %a2
47 %vuge = icmp uge i8 %a1, %a2
48 %vult = icmp ult i8 %a1, %a2
49 %vule = icmp ule i8 %a1, %a2
50 %vsgt = icmp sgt i8 %a1, %a2
51 %vsge = icmp sge i8 %a1, %a2
52 %vslt = icmp slt i8 %a1, %a2
53 %vsle = icmp sle i8 %a1, %a2
54 ret i1 %veq
55 }
56
57 ; CHECK-NEXT: define i1 @IcmpI8(i32 %__0, i32 %__1) {
58 ; CHECK-NEXT: __0:
59 ; CHECK-NEXT: %__2 = trunc i32 %__0 to i8
60 ; CHECK-NEXT: %__3 = trunc i32 %__1 to i8
61 ; CHECK-NEXT: %__4 = icmp eq i8 %__2, %__3
62 ; CHECK-NEXT: %__5 = icmp ne i8 %__2, %__3
63 ; CHECK-NEXT: %__6 = icmp ugt i8 %__2, %__3
64 ; CHECK-NEXT: %__7 = icmp uge i8 %__2, %__3
65 ; CHECK-NEXT: %__8 = icmp ult i8 %__2, %__3
66 ; CHECK-NEXT: %__9 = icmp ule i8 %__2, %__3
67 ; CHECK-NEXT: %__10 = icmp sgt i8 %__2, %__3
68 ; CHECK-NEXT: %__11 = icmp sge i8 %__2, %__3
69 ; CHECK-NEXT: %__12 = icmp slt i8 %__2, %__3
70 ; CHECK-NEXT: %__13 = icmp sle i8 %__2, %__3
71 ; CHECK-NEXT: ret i1 %__4
72 ; CHECK-NEXT: }
73
74 define i1 @IcmpI16(i32 %p1, i32 %p2) {
75 %a1 = trunc i32 %p1 to i16
76 %a2 = trunc i32 %p2 to i16
77 %veq = icmp eq i16 %a1, %a2
78 %vne = icmp ne i16 %a1, %a2
79 %vugt = icmp ugt i16 %a1, %a2
80 %vuge = icmp uge i16 %a1, %a2
81 %vult = icmp ult i16 %a1, %a2
82 %vule = icmp ule i16 %a1, %a2
83 %vsgt = icmp sgt i16 %a1, %a2
84 %vsge = icmp sge i16 %a1, %a2
85 %vslt = icmp slt i16 %a1, %a2
86 %vsle = icmp sle i16 %a1, %a2
87 ret i1 %veq
88 }
89
90 ; CHECK-NEXT: define i1 @IcmpI16(i32 %__0, i32 %__1) {
91 ; CHECK-NEXT: __0:
92 ; CHECK-NEXT: %__2 = trunc i32 %__0 to i16
93 ; CHECK-NEXT: %__3 = trunc i32 %__1 to i16
94 ; CHECK-NEXT: %__4 = icmp eq i16 %__2, %__3
95 ; CHECK-NEXT: %__5 = icmp ne i16 %__2, %__3
96 ; CHECK-NEXT: %__6 = icmp ugt i16 %__2, %__3
97 ; CHECK-NEXT: %__7 = icmp uge i16 %__2, %__3
98 ; CHECK-NEXT: %__8 = icmp ult i16 %__2, %__3
99 ; CHECK-NEXT: %__9 = icmp ule i16 %__2, %__3
100 ; CHECK-NEXT: %__10 = icmp sgt i16 %__2, %__3
101 ; CHECK-NEXT: %__11 = icmp sge i16 %__2, %__3
102 ; CHECK-NEXT: %__12 = icmp slt i16 %__2, %__3
103 ; CHECK-NEXT: %__13 = icmp sle i16 %__2, %__3
104 ; CHECK-NEXT: ret i1 %__4
105 ; CHECK-NEXT: }
106
107 define i1 @IcmpI32(i32 %a1, i32 %a2) {
108 %veq = icmp eq i32 %a1, %a2
109 %vne = icmp ne i32 %a1, %a2
110 %vugt = icmp ugt i32 %a1, %a2
111 %vuge = icmp uge i32 %a1, %a2
112 %vult = icmp ult i32 %a1, %a2
113 %vule = icmp ule i32 %a1, %a2
114 %vsgt = icmp sgt i32 %a1, %a2
115 %vsge = icmp sge i32 %a1, %a2
116 %vslt = icmp slt i32 %a1, %a2
117 %vsle = icmp sle i32 %a1, %a2
118 ret i1 %veq
119 }
120
121 ; CHECK-NEXT: define i1 @IcmpI32(i32 %__0, i32 %__1) {
122 ; CHECK-NEXT: __0:
123 ; CHECK-NEXT: %__2 = icmp eq i32 %__0, %__1
124 ; CHECK-NEXT: %__3 = icmp ne i32 %__0, %__1
125 ; CHECK-NEXT: %__4 = icmp ugt i32 %__0, %__1
126 ; CHECK-NEXT: %__5 = icmp uge i32 %__0, %__1
127 ; CHECK-NEXT: %__6 = icmp ult i32 %__0, %__1
128 ; CHECK-NEXT: %__7 = icmp ule i32 %__0, %__1
129 ; CHECK-NEXT: %__8 = icmp sgt i32 %__0, %__1
130 ; CHECK-NEXT: %__9 = icmp sge i32 %__0, %__1
131 ; CHECK-NEXT: %__10 = icmp slt i32 %__0, %__1
132 ; CHECK-NEXT: %__11 = icmp sle i32 %__0, %__1
133 ; CHECK-NEXT: ret i1 %__2
134 ; CHECK-NEXT: }
135
136 define i1 @IcmpI64(i64 %a1, i64 %a2) {
137 %veq = icmp eq i64 %a1, %a2
138 %vne = icmp ne i64 %a1, %a2
139 %vugt = icmp ugt i64 %a1, %a2
140 %vuge = icmp uge i64 %a1, %a2
141 %vult = icmp ult i64 %a1, %a2
142 %vule = icmp ule i64 %a1, %a2
143 %vsgt = icmp sgt i64 %a1, %a2
144 %vsge = icmp sge i64 %a1, %a2
145 %vslt = icmp slt i64 %a1, %a2
146 %vsle = icmp sle i64 %a1, %a2
147 ret i1 %veq
148 }
149
150 ; CHECK-NEXT: define i1 @IcmpI64(i64 %__0, i64 %__1) {
151 ; CHECK-NEXT: __0:
152 ; CHECK-NEXT: %__2 = icmp eq i64 %__0, %__1
153 ; CHECK-NEXT: %__3 = icmp ne i64 %__0, %__1
154 ; CHECK-NEXT: %__4 = icmp ugt i64 %__0, %__1
155 ; CHECK-NEXT: %__5 = icmp uge i64 %__0, %__1
156 ; CHECK-NEXT: %__6 = icmp ult i64 %__0, %__1
157 ; CHECK-NEXT: %__7 = icmp ule i64 %__0, %__1
158 ; CHECK-NEXT: %__8 = icmp sgt i64 %__0, %__1
159 ; CHECK-NEXT: %__9 = icmp sge i64 %__0, %__1
160 ; CHECK-NEXT: %__10 = icmp slt i64 %__0, %__1
161 ; CHECK-NEXT: %__11 = icmp sle i64 %__0, %__1
162 ; CHECK-NEXT: ret i1 %__2
163 ; CHECK-NEXT: }
164
165 define <4 x i1> @IcmpV4xI1(<4 x i1> %a1, <4 x i1> %a2) {
166 %veq = icmp eq <4 x i1> %a1, %a2
167 %vne = icmp ne <4 x i1> %a1, %a2
168 %vugt = icmp ugt <4 x i1> %a1, %a2
169 %vuge = icmp uge <4 x i1> %a1, %a2
170 %vult = icmp ult <4 x i1> %a1, %a2
171 %vule = icmp ule <4 x i1> %a1, %a2
172 %vsgt = icmp sgt <4 x i1> %a1, %a2
173 %vsge = icmp sge <4 x i1> %a1, %a2
174 %vslt = icmp slt <4 x i1> %a1, %a2
175 %vsle = icmp sle <4 x i1> %a1, %a2
176 ret <4 x i1> %veq
177 }
178
179 ; CHECK-NEXT: define <4 x i1> @IcmpV4xI1(<4 x i1> %__0, <4 x i1> %__1) {
180 ; CHECK-NEXT: __0:
181 ; CHECK-NEXT: %__2 = icmp eq <4 x i1> %__0, %__1
182 ; CHECK-NEXT: %__3 = icmp ne <4 x i1> %__0, %__1
183 ; CHECK-NEXT: %__4 = icmp ugt <4 x i1> %__0, %__1
184 ; CHECK-NEXT: %__5 = icmp uge <4 x i1> %__0, %__1
185 ; CHECK-NEXT: %__6 = icmp ult <4 x i1> %__0, %__1
186 ; CHECK-NEXT: %__7 = icmp ule <4 x i1> %__0, %__1
187 ; CHECK-NEXT: %__8 = icmp sgt <4 x i1> %__0, %__1
188 ; CHECK-NEXT: %__9 = icmp sge <4 x i1> %__0, %__1
189 ; CHECK-NEXT: %__10 = icmp slt <4 x i1> %__0, %__1
190 ; CHECK-NEXT: %__11 = icmp sle <4 x i1> %__0, %__1
191 ; CHECK-NEXT: ret <4 x i1> %__2
192 ; CHECK-NEXT: }
193
194 define <8 x i1> @IcmpV8xI1(<8 x i1> %a1, <8 x i1> %a2) {
195 %veq = icmp eq <8 x i1> %a1, %a2
196 %vne = icmp ne <8 x i1> %a1, %a2
197 %vugt = icmp ugt <8 x i1> %a1, %a2
198 %vuge = icmp uge <8 x i1> %a1, %a2
199 %vult = icmp ult <8 x i1> %a1, %a2
200 %vule = icmp ule <8 x i1> %a1, %a2
201 %vsgt = icmp sgt <8 x i1> %a1, %a2
202 %vsge = icmp sge <8 x i1> %a1, %a2
203 %vslt = icmp slt <8 x i1> %a1, %a2
204 %vsle = icmp sle <8 x i1> %a1, %a2
205 ret <8 x i1> %veq
206 }
207
208 ; CHECK-NEXT: define <8 x i1> @IcmpV8xI1(<8 x i1> %__0, <8 x i1> %__1) {
209 ; CHECK-NEXT: __0:
210 ; CHECK-NEXT: %__2 = icmp eq <8 x i1> %__0, %__1
211 ; CHECK-NEXT: %__3 = icmp ne <8 x i1> %__0, %__1
212 ; CHECK-NEXT: %__4 = icmp ugt <8 x i1> %__0, %__1
213 ; CHECK-NEXT: %__5 = icmp uge <8 x i1> %__0, %__1
214 ; CHECK-NEXT: %__6 = icmp ult <8 x i1> %__0, %__1
215 ; CHECK-NEXT: %__7 = icmp ule <8 x i1> %__0, %__1
216 ; CHECK-NEXT: %__8 = icmp sgt <8 x i1> %__0, %__1
217 ; CHECK-NEXT: %__9 = icmp sge <8 x i1> %__0, %__1
218 ; CHECK-NEXT: %__10 = icmp slt <8 x i1> %__0, %__1
219 ; CHECK-NEXT: %__11 = icmp sle <8 x i1> %__0, %__1
220 ; CHECK-NEXT: ret <8 x i1> %__2
221 ; CHECK-NEXT: }
222
223 define <16 x i1> @IcmpV16xI1(<16 x i1> %a1, <16 x i1> %a2) {
224 %veq = icmp eq <16 x i1> %a1, %a2
225 %vne = icmp ne <16 x i1> %a1, %a2
226 %vugt = icmp ugt <16 x i1> %a1, %a2
227 %vuge = icmp uge <16 x i1> %a1, %a2
228 %vult = icmp ult <16 x i1> %a1, %a2
229 %vule = icmp ule <16 x i1> %a1, %a2
230 %vsgt = icmp sgt <16 x i1> %a1, %a2
231 %vsge = icmp sge <16 x i1> %a1, %a2
232 %vslt = icmp slt <16 x i1> %a1, %a2
233 %vsle = icmp sle <16 x i1> %a1, %a2
234 ret <16 x i1> %veq
235 }
236
237 ; CHECK-NEXT: define <16 x i1> @IcmpV16xI1(<16 x i1> %__0, <16 x i1> %__1) {
238 ; CHECK-NEXT: __0:
239 ; CHECK-NEXT: %__2 = icmp eq <16 x i1> %__0, %__1
240 ; CHECK-NEXT: %__3 = icmp ne <16 x i1> %__0, %__1
241 ; CHECK-NEXT: %__4 = icmp ugt <16 x i1> %__0, %__1
242 ; CHECK-NEXT: %__5 = icmp uge <16 x i1> %__0, %__1
243 ; CHECK-NEXT: %__6 = icmp ult <16 x i1> %__0, %__1
244 ; CHECK-NEXT: %__7 = icmp ule <16 x i1> %__0, %__1
245 ; CHECK-NEXT: %__8 = icmp sgt <16 x i1> %__0, %__1
246 ; CHECK-NEXT: %__9 = icmp sge <16 x i1> %__0, %__1
247 ; CHECK-NEXT: %__10 = icmp slt <16 x i1> %__0, %__1
248 ; CHECK-NEXT: %__11 = icmp sle <16 x i1> %__0, %__1
249 ; CHECK-NEXT: ret <16 x i1> %__2
250 ; CHECK-NEXT: }
251
252 define <16 x i1> @IcmpV16xI8(<16 x i8> %a1, <16 x i8> %a2) {
253 %veq = icmp eq <16 x i8> %a1, %a2
254 %vne = icmp ne <16 x i8> %a1, %a2
255 %vugt = icmp ugt <16 x i8> %a1, %a2
256 %vuge = icmp uge <16 x i8> %a1, %a2
257 %vult = icmp ult <16 x i8> %a1, %a2
258 %vule = icmp ule <16 x i8> %a1, %a2
259 %vsgt = icmp sgt <16 x i8> %a1, %a2
260 %vsge = icmp sge <16 x i8> %a1, %a2
261 %vslt = icmp slt <16 x i8> %a1, %a2
262 %vsle = icmp sle <16 x i8> %a1, %a2
263 ret <16 x i1> %veq
264 }
265
266 ; CHECK-NEXT: define <16 x i1> @IcmpV16xI8(<16 x i8> %__0, <16 x i8> %__1) {
267 ; CHECK-NEXT: __0:
268 ; CHECK-NEXT: %__2 = icmp eq <16 x i8> %__0, %__1
269 ; CHECK-NEXT: %__3 = icmp ne <16 x i8> %__0, %__1
270 ; CHECK-NEXT: %__4 = icmp ugt <16 x i8> %__0, %__1
271 ; CHECK-NEXT: %__5 = icmp uge <16 x i8> %__0, %__1
272 ; CHECK-NEXT: %__6 = icmp ult <16 x i8> %__0, %__1
273 ; CHECK-NEXT: %__7 = icmp ule <16 x i8> %__0, %__1
274 ; CHECK-NEXT: %__8 = icmp sgt <16 x i8> %__0, %__1
275 ; CHECK-NEXT: %__9 = icmp sge <16 x i8> %__0, %__1
276 ; CHECK-NEXT: %__10 = icmp slt <16 x i8> %__0, %__1
277 ; CHECK-NEXT: %__11 = icmp sle <16 x i8> %__0, %__1
278 ; CHECK-NEXT: ret <16 x i1> %__2
279 ; CHECK-NEXT: }
280
281 define <8 x i1> @IcmpV8xI16(<8 x i16> %a1, <8 x i16> %a2) {
282 %veq = icmp eq <8 x i16> %a1, %a2
283 %vne = icmp ne <8 x i16> %a1, %a2
284 %vugt = icmp ugt <8 x i16> %a1, %a2
285 %vuge = icmp uge <8 x i16> %a1, %a2
286 %vult = icmp ult <8 x i16> %a1, %a2
287 %vule = icmp ule <8 x i16> %a1, %a2
288 %vsgt = icmp sgt <8 x i16> %a1, %a2
289 %vsge = icmp sge <8 x i16> %a1, %a2
290 %vslt = icmp slt <8 x i16> %a1, %a2
291 %vsle = icmp sle <8 x i16> %a1, %a2
292 ret <8 x i1> %veq
293 }
294
295 ; CHECK-NEXT: define <8 x i1> @IcmpV8xI16(<8 x i16> %__0, <8 x i16> %__1) {
296 ; CHECK-NEXT: __0:
297 ; CHECK-NEXT: %__2 = icmp eq <8 x i16> %__0, %__1
298 ; CHECK-NEXT: %__3 = icmp ne <8 x i16> %__0, %__1
299 ; CHECK-NEXT: %__4 = icmp ugt <8 x i16> %__0, %__1
300 ; CHECK-NEXT: %__5 = icmp uge <8 x i16> %__0, %__1
301 ; CHECK-NEXT: %__6 = icmp ult <8 x i16> %__0, %__1
302 ; CHECK-NEXT: %__7 = icmp ule <8 x i16> %__0, %__1
303 ; CHECK-NEXT: %__8 = icmp sgt <8 x i16> %__0, %__1
304 ; CHECK-NEXT: %__9 = icmp sge <8 x i16> %__0, %__1
305 ; CHECK-NEXT: %__10 = icmp slt <8 x i16> %__0, %__1
306 ; CHECK-NEXT: %__11 = icmp sle <8 x i16> %__0, %__1
307 ; CHECK-NEXT: ret <8 x i1> %__2
308 ; CHECK-NEXT: }
309
310 define <4 x i1> @IcmpV4xI32(<4 x i32> %a1, <4 x i32> %a2) {
311 %veq = icmp eq <4 x i32> %a1, %a2
312 %vne = icmp ne <4 x i32> %a1, %a2
313 %vugt = icmp ugt <4 x i32> %a1, %a2
314 %vuge = icmp uge <4 x i32> %a1, %a2
315 %vult = icmp ult <4 x i32> %a1, %a2
316 %vule = icmp ule <4 x i32> %a1, %a2
317 %vsgt = icmp sgt <4 x i32> %a1, %a2
318 %vsge = icmp sge <4 x i32> %a1, %a2
319 %vslt = icmp slt <4 x i32> %a1, %a2
320 %vsle = icmp sle <4 x i32> %a1, %a2
321 ret <4 x i1> %veq
322 }
323
324 ; CHECK-NEXT: define <4 x i1> @IcmpV4xI32(<4 x i32> %__0, <4 x i32> %__1) {
325 ; CHECK-NEXT: __0:
326 ; CHECK-NEXT: %__2 = icmp eq <4 x i32> %__0, %__1
327 ; CHECK-NEXT: %__3 = icmp ne <4 x i32> %__0, %__1
328 ; CHECK-NEXT: %__4 = icmp ugt <4 x i32> %__0, %__1
329 ; CHECK-NEXT: %__5 = icmp uge <4 x i32> %__0, %__1
330 ; CHECK-NEXT: %__6 = icmp ult <4 x i32> %__0, %__1
331 ; CHECK-NEXT: %__7 = icmp ule <4 x i32> %__0, %__1
332 ; CHECK-NEXT: %__8 = icmp sgt <4 x i32> %__0, %__1
333 ; CHECK-NEXT: %__9 = icmp sge <4 x i32> %__0, %__1
334 ; CHECK-NEXT: %__10 = icmp slt <4 x i32> %__0, %__1
335 ; CHECK-NEXT: %__11 = icmp sle <4 x i32> %__0, %__1
336 ; CHECK-NEXT: ret <4 x i1> %__2
337 ; CHECK-NEXT: }
338
339 define i1 @FcmpFloat(float %a1, float %a2) {
340 %vfalse = fcmp false float %a1, %a2
341 %voeq = fcmp oeq float %a1, %a2
342 %vogt = fcmp ogt float %a1, %a2
343 %voge = fcmp oge float %a1, %a2
344 %volt = fcmp olt float %a1, %a2
345 %vole = fcmp ole float %a1, %a2
346 %vone = fcmp one float %a1, %a2
347 %ord = fcmp ord float %a1, %a2
348 %vueq = fcmp ueq float %a1, %a2
349 %vugt = fcmp ugt float %a1, %a2
350 %vuge = fcmp uge float %a1, %a2
351 %vult = fcmp ult float %a1, %a2
352 %vule = fcmp ule float %a1, %a2
353 %vune = fcmp une float %a1, %a2
354 %vuno = fcmp uno float %a1, %a2
355 %vtrue = fcmp true float %a1, %a2
356 ret i1 %voeq
357 }
358
359 ; CHECK-NEXT: define i1 @FcmpFloat(float %__0, float %__1) {
360 ; CHECK-NEXT: __0:
361 ; CHECK-NEXT: %__2 = fcmp false float %__0, %__1
362 ; CHECK-NEXT: %__3 = fcmp oeq float %__0, %__1
363 ; CHECK-NEXT: %__4 = fcmp ogt float %__0, %__1
364 ; CHECK-NEXT: %__5 = fcmp oge float %__0, %__1
365 ; CHECK-NEXT: %__6 = fcmp olt float %__0, %__1
366 ; CHECK-NEXT: %__7 = fcmp ole float %__0, %__1
367 ; CHECK-NEXT: %__8 = fcmp one float %__0, %__1
368 ; CHECK-NEXT: %__9 = fcmp ord float %__0, %__1
369 ; CHECK-NEXT: %__10 = fcmp ueq float %__0, %__1
370 ; CHECK-NEXT: %__11 = fcmp ugt float %__0, %__1
371 ; CHECK-NEXT: %__12 = fcmp uge float %__0, %__1
372 ; CHECK-NEXT: %__13 = fcmp ult float %__0, %__1
373 ; CHECK-NEXT: %__14 = fcmp ule float %__0, %__1
374 ; CHECK-NEXT: %__15 = fcmp une float %__0, %__1
375 ; CHECK-NEXT: %__16 = fcmp uno float %__0, %__1
376 ; CHECK-NEXT: %__17 = fcmp true float %__0, %__1
377 ; CHECK-NEXT: ret i1 %__3
378 ; CHECK-NEXT: }
379
380 define i1 @FcmpDouble(double %a1, double %a2) {
381 %vfalse = fcmp false double %a1, %a2
382 %voeq = fcmp oeq double %a1, %a2
383 %vogt = fcmp ogt double %a1, %a2
384 %voge = fcmp oge double %a1, %a2
385 %volt = fcmp olt double %a1, %a2
386 %vole = fcmp ole double %a1, %a2
387 %vone = fcmp one double %a1, %a2
388 %ord = fcmp ord double %a1, %a2
389 %vueq = fcmp ueq double %a1, %a2
390 %vugt = fcmp ugt double %a1, %a2
391 %vuge = fcmp uge double %a1, %a2
392 %vult = fcmp ult double %a1, %a2
393 %vule = fcmp ule double %a1, %a2
394 %vune = fcmp une double %a1, %a2
395 %vuno = fcmp uno double %a1, %a2
396 %vtrue = fcmp true double %a1, %a2
397 ret i1 %voeq
398 }
399
400 ; CHECK-NEXT: define i1 @FcmpDouble(double %__0, double %__1) {
401 ; CHECK-NEXT: __0:
402 ; CHECK-NEXT: %__2 = fcmp false double %__0, %__1
403 ; CHECK-NEXT: %__3 = fcmp oeq double %__0, %__1
404 ; CHECK-NEXT: %__4 = fcmp ogt double %__0, %__1
405 ; CHECK-NEXT: %__5 = fcmp oge double %__0, %__1
406 ; CHECK-NEXT: %__6 = fcmp olt double %__0, %__1
407 ; CHECK-NEXT: %__7 = fcmp ole double %__0, %__1
408 ; CHECK-NEXT: %__8 = fcmp one double %__0, %__1
409 ; CHECK-NEXT: %__9 = fcmp ord double %__0, %__1
410 ; CHECK-NEXT: %__10 = fcmp ueq double %__0, %__1
411 ; CHECK-NEXT: %__11 = fcmp ugt double %__0, %__1
412 ; CHECK-NEXT: %__12 = fcmp uge double %__0, %__1
413 ; CHECK-NEXT: %__13 = fcmp ult double %__0, %__1
414 ; CHECK-NEXT: %__14 = fcmp ule double %__0, %__1
415 ; CHECK-NEXT: %__15 = fcmp une double %__0, %__1
416 ; CHECK-NEXT: %__16 = fcmp uno double %__0, %__1
417 ; CHECK-NEXT: %__17 = fcmp true double %__0, %__1
418 ; CHECK-NEXT: ret i1 %__3
419 ; CHECK-NEXT: }
420
421 define <4 x i1> @FcmpV4xFloat(<4 x float> %a1, <4 x float> %a2) {
422 %vfalse = fcmp false <4 x float> %a1, %a2
423 %voeq = fcmp oeq <4 x float> %a1, %a2
424 %vogt = fcmp ogt <4 x float> %a1, %a2
425 %voge = fcmp oge <4 x float> %a1, %a2
426 %volt = fcmp olt <4 x float> %a1, %a2
427 %vole = fcmp ole <4 x float> %a1, %a2
428 %vone = fcmp one <4 x float> %a1, %a2
429 %ord = fcmp ord <4 x float> %a1, %a2
430 %vueq = fcmp ueq <4 x float> %a1, %a2
431 %vugt = fcmp ugt <4 x float> %a1, %a2
432 %vuge = fcmp uge <4 x float> %a1, %a2
433 %vult = fcmp ult <4 x float> %a1, %a2
434 %vule = fcmp ule <4 x float> %a1, %a2
435 %vune = fcmp une <4 x float> %a1, %a2
436 %vuno = fcmp uno <4 x float> %a1, %a2
437 %vtrue = fcmp true <4 x float> %a1, %a2
438 ret <4 x i1> %voeq
439 }
440
441 ; CHECK-NEXT: define <4 x i1> @FcmpV4xFloat(<4 x float> %__0, <4 x float> %__1) {
442 ; CHECK-NEXT: __0:
443 ; CHECK-NEXT: %__2 = fcmp false <4 x float> %__0, %__1
444 ; CHECK-NEXT: %__3 = fcmp oeq <4 x float> %__0, %__1
445 ; CHECK-NEXT: %__4 = fcmp ogt <4 x float> %__0, %__1
446 ; CHECK-NEXT: %__5 = fcmp oge <4 x float> %__0, %__1
447 ; CHECK-NEXT: %__6 = fcmp olt <4 x float> %__0, %__1
448 ; CHECK-NEXT: %__7 = fcmp ole <4 x float> %__0, %__1
449 ; CHECK-NEXT: %__8 = fcmp one <4 x float> %__0, %__1
450 ; CHECK-NEXT: %__9 = fcmp ord <4 x float> %__0, %__1
451 ; CHECK-NEXT: %__10 = fcmp ueq <4 x float> %__0, %__1
452 ; CHECK-NEXT: %__11 = fcmp ugt <4 x float> %__0, %__1
453 ; CHECK-NEXT: %__12 = fcmp uge <4 x float> %__0, %__1
454 ; CHECK-NEXT: %__13 = fcmp ult <4 x float> %__0, %__1
455 ; CHECK-NEXT: %__14 = fcmp ule <4 x float> %__0, %__1
456 ; CHECK-NEXT: %__15 = fcmp une <4 x float> %__0, %__1
457 ; CHECK-NEXT: %__16 = fcmp uno <4 x float> %__0, %__1
458 ; CHECK-NEXT: %__17 = fcmp true <4 x float> %__0, %__1
459 ; CHECK-NEXT: ret <4 x i1> %__3
460 ; CHECK-NEXT: }
OLDNEW
« no previous file with comments | « src/PNaClTranslator.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698