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

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

Issue 514273002: Add cast instructions to subzero's pnacl bitcode translator. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix issues in patch set 2. 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 ; Tests if we can read cast operations.
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 ; TODO(kschimpf) Find way to test pointer conversions (since they in general
9 ; get removed by pnacl-freeze).
10
11 define i32 @TruncI64(i64 %v) {
12 %v1 = trunc i64 %v to i1
13 %v8 = trunc i64 %v to i8
14 %v16 = trunc i64 %v to i16
15 %v32 = trunc i64 %v to i32
16 ret i32 %v32
17 }
18
19 ; CHECK: define i32 @TruncI64(i64 %__0) {
20 ; CHECK-NEXT: __0:
21 ; CHECK-NEXT: %__1 = trunc i64 %__0 to i1
22 ; CHECK-NEXT: %__2 = trunc i64 %__0 to i8
23 ; CHECK-NEXT: %__3 = trunc i64 %__0 to i16
24 ; CHECK-NEXT: %__4 = trunc i64 %__0 to i32
25 ; CHECK-NEXT: ret i32 %__4
26 ; CHECK-NEXT: }
27
28 define void @TruncI32(i32 %v) {
29 %v1 = trunc i32 %v to i1
30 %v8 = trunc i32 %v to i8
31 %v16 = trunc i32 %v to i16
32 ret void
33 }
34
35 ; CHECK-NEXT: define void @TruncI32(i32 %__0) {
36 ; CHECK-NEXT: __0:
37 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i1
38 ; CHECK-NEXT: %__2 = trunc i32 %__0 to i8
39 ; CHECK-NEXT: %__3 = trunc i32 %__0 to i16
40 ; CHECK-NEXT: ret void
41 ; CHECK-NEXT: }
42
43 define void @TruncI16(i32 %p) {
44 %v = trunc i32 %p to i16
45 %v1 = trunc i16 %v to i1
46 %v8 = trunc i16 %v to i8
47 ret void
48 }
49
50 ; CHECK-NEXT: define void @TruncI16(i32 %__0) {
51 ; CHECK-NEXT: __0:
52 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i16
53 ; CHECK-NEXT: %__2 = trunc i16 %__1 to i1
54 ; CHECK-NEXT: %__3 = trunc i16 %__1 to i8
55 ; CHECK-NEXT: ret void
56 ; CHECK-NEXT: }
57
58 define void @TruncI8(i32 %p) {
59 %v = trunc i32 %p to i8
60 %v1 = trunc i8 %v to i1
61 ret void
62 }
63
64 ; CHECK-NEXT: define void @TruncI8(i32 %__0) {
65 ; CHECK-NEXT: __0:
66 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i8
67 ; CHECK-NEXT: %__2 = trunc i8 %__1 to i1
68 ; CHECK-NEXT: ret void
69 ; CHECK-NEXT: }
70
71 define i64 @ZextI1(i32 %p) {
72 %v = trunc i32 %p to i1
73 %v8 = zext i1 %v to i8
74 %v16 = zext i1 %v to i16
75 %v32 = zext i1 %v to i32
76 %v64 = zext i1 %v to i64
77 ret i64 %v64
78 }
79
80 ; CHECK-NEXT: define i64 @ZextI1(i32 %__0) {
81 ; CHECK-NEXT: __0:
82 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i1
83 ; CHECK-NEXT: %__2 = zext i1 %__1 to i8
84 ; CHECK-NEXT: %__3 = zext i1 %__1 to i16
85 ; CHECK-NEXT: %__4 = zext i1 %__1 to i32
86 ; CHECK-NEXT: %__5 = zext i1 %__1 to i64
87 ; CHECK-NEXT: ret i64 %__5
88 ; CHECK-NEXT: }
89
90 define i32 @ZextI8(i32 %p) {
91 %v = trunc i32 %p to i8
92 %v16 = zext i8 %v to i16
93 %v32 = zext i8 %v to i32
94 %v64 = zext i8 %v to i64
95 ret i32 %v32
96 }
97
98 ; CHECK-NEXT: define i32 @ZextI8(i32 %__0) {
99 ; CHECK-NEXT: __0:
100 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i8
101 ; CHECK-NEXT: %__2 = zext i8 %__1 to i16
102 ; CHECK-NEXT: %__3 = zext i8 %__1 to i32
103 ; CHECK-NEXT: %__4 = zext i8 %__1 to i64
104 ; CHECK-NEXT: ret i32 %__3
105 ; CHECK-NEXT: }
106
107 define i64 @ZextI16(i32 %p) {
108 %v = trunc i32 %p to i16
109 %v32 = zext i16 %v to i32
110 %v64 = zext i16 %v to i64
111 ret i64 %v64
112 }
113
114 ; CHECK-NEXT: define i64 @ZextI16(i32 %__0) {
115 ; CHECK-NEXT: __0:
116 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i16
117 ; CHECK-NEXT: %__2 = zext i16 %__1 to i32
118 ; CHECK-NEXT: %__3 = zext i16 %__1 to i64
119 ; CHECK-NEXT: ret i64 %__3
120 ; CHECK-NEXT: }
121
122 define i64 @Zexti32(i32 %v) {
123 %v64 = zext i32 %v to i64
124 ret i64 %v64
125 }
126
127 ; CHECK-NEXT: define i64 @Zexti32(i32 %__0) {
128 ; CHECK-NEXT: __0:
129 ; CHECK-NEXT: %__1 = zext i32 %__0 to i64
130 ; CHECK-NEXT: ret i64 %__1
131 ; CHECK-NEXT: }
132
133 define i32 @SextI1(i32 %p) {
134 %v = trunc i32 %p to i1
135 %v8 = sext i1 %v to i8
136 %v16 = sext i1 %v to i16
137 %v32 = sext i1 %v to i32
138 %v64 = sext i1 %v to i64
139 ret i32 %v32
140 }
141
142 ; CHECK-NEXT: define i32 @SextI1(i32 %__0) {
143 ; CHECK-NEXT: __0:
144 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i1
145 ; CHECK-NEXT: %__2 = sext i1 %__1 to i8
146 ; CHECK-NEXT: %__3 = sext i1 %__1 to i16
147 ; CHECK-NEXT: %__4 = sext i1 %__1 to i32
148 ; CHECK-NEXT: %__5 = sext i1 %__1 to i64
149 ; CHECK-NEXT: ret i32 %__4
150 ; CHECK-NEXT: }
151
152 define i64 @SextI8(i32 %p) {
153 %v = trunc i32 %p to i8
154 %v16 = sext i8 %v to i16
155 %v32 = sext i8 %v to i32
156 %v64 = sext i8 %v to i64
157 ret i64 %v64
158 }
159
160 ; CHECK-NEXT: define i64 @SextI8(i32 %__0) {
161 ; CHECK-NEXT: __0:
162 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i8
163 ; CHECK-NEXT: %__2 = sext i8 %__1 to i16
164 ; CHECK-NEXT: %__3 = sext i8 %__1 to i32
165 ; CHECK-NEXT: %__4 = sext i8 %__1 to i64
166 ; CHECK-NEXT: ret i64 %__4
167 ; CHECK-NEXT: }
168
169 define i32 @SextI16(i32 %p) {
170 %v = trunc i32 %p to i16
171 %v32 = sext i16 %v to i32
172 %v64 = sext i16 %v to i64
173 ret i32 %v32
174 }
175
176 ; CHECK-NEXT: define i32 @SextI16(i32 %__0) {
177 ; CHECK-NEXT: __0:
178 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i16
179 ; CHECK-NEXT: %__2 = sext i16 %__1 to i32
180 ; CHECK-NEXT: %__3 = sext i16 %__1 to i64
181 ; CHECK-NEXT: ret i32 %__2
182 ; CHECK-NEXT: }
183
184 define i64 @Sexti32(i32 %v) {
185 %v64 = sext i32 %v to i64
186 ret i64 %v64
187 }
188
189 ; CHECK-NEXT: define i64 @Sexti32(i32 %__0) {
190 ; CHECK-NEXT: __0:
191 ; CHECK-NEXT: %__1 = sext i32 %__0 to i64
192 ; CHECK-NEXT: ret i64 %__1
193 ; CHECK-NEXT: }
194
195 define float @Fptrunc(double %v) {
196 %vfloat = fptrunc double %v to float
197 ret float %vfloat
198 }
199
200 ; CHECK-NEXT: define float @Fptrunc(double %__0) {
201 ; CHECK-NEXT: __0:
202 ; CHECK-NEXT: %__1 = fptrunc double %__0 to float
203 ; CHECK-NEXT: ret float %__1
204 ; CHECK-NEXT: }
205
206 define double @Fpext(float %v) {
207 %vdouble = fpext float %v to double
208 ret double %vdouble
209 }
210
211 ; CHECK-NEXT: define double @Fpext(float %__0) {
212 ; CHECK-NEXT: __0:
213 ; CHECK-NEXT: %__1 = fpext float %__0 to double
214 ; CHECK-NEXT: ret double %__1
215 ; CHECK-NEXT: }
216
217 define i32 @FptouiFloat(float %v) {
218 %v1 = fptoui float %v to i1
219 %v8 = fptoui float %v to i8
220 %v16 = fptoui float %v to i16
221 %v32 = fptoui float %v to i32
222 %v64 = fptoui float %v to i64
223 ret i32 %v32
224 }
225
226 ; CHECK-NEXT: define i32 @FptouiFloat(float %__0) {
227 ; CHECK-NEXT: __0:
228 ; CHECK-NEXT: %__1 = fptoui float %__0 to i1
229 ; CHECK-NEXT: %__2 = fptoui float %__0 to i8
230 ; CHECK-NEXT: %__3 = fptoui float %__0 to i16
231 ; CHECK-NEXT: %__4 = fptoui float %__0 to i32
232 ; CHECK-NEXT: %__5 = fptoui float %__0 to i64
233 ; CHECK-NEXT: ret i32 %__4
234 ; CHECK-NEXT: }
235
236 define i32 @FptouiDouble(double %v) {
237 %v1 = fptoui double %v to i1
238 %v8 = fptoui double %v to i8
239 %v16 = fptoui double %v to i16
240 %v32 = fptoui double %v to i32
241 %v64 = fptoui double %v to i64
242 ret i32 %v32
243 }
244
245 ; CHECK-NEXT: define i32 @FptouiDouble(double %__0) {
246 ; CHECK-NEXT: __0:
247 ; CHECK-NEXT: %__1 = fptoui double %__0 to i1
248 ; CHECK-NEXT: %__2 = fptoui double %__0 to i8
249 ; CHECK-NEXT: %__3 = fptoui double %__0 to i16
250 ; CHECK-NEXT: %__4 = fptoui double %__0 to i32
251 ; CHECK-NEXT: %__5 = fptoui double %__0 to i64
252 ; CHECK-NEXT: ret i32 %__4
253 ; CHECK-NEXT: }
254
255 define i32 @FptosiFloat(float %v) {
256 %v1 = fptosi float %v to i1
257 %v8 = fptosi float %v to i8
258 %v16 = fptosi float %v to i16
259 %v32 = fptosi float %v to i32
260 %v64 = fptosi float %v to i64
261 ret i32 %v32
262 }
263
264 ; CHECK-NEXT: define i32 @FptosiFloat(float %__0) {
265 ; CHECK-NEXT: __0:
266 ; CHECK-NEXT: %__1 = fptosi float %__0 to i1
267 ; CHECK-NEXT: %__2 = fptosi float %__0 to i8
268 ; CHECK-NEXT: %__3 = fptosi float %__0 to i16
269 ; CHECK-NEXT: %__4 = fptosi float %__0 to i32
270 ; CHECK-NEXT: %__5 = fptosi float %__0 to i64
271 ; CHECK-NEXT: ret i32 %__4
272 ; CHECK-NEXT: }
273
274 define i32 @FptosiDouble(double %v) {
275 %v1 = fptosi double %v to i1
276 %v8 = fptosi double %v to i8
277 %v16 = fptosi double %v to i16
278 %v32 = fptosi double %v to i32
279 %v64 = fptosi double %v to i64
280 ret i32 %v32
281 }
282
283 ; CHECK-NEXT: define i32 @FptosiDouble(double %__0) {
284 ; CHECK-NEXT: __0:
285 ; CHECK-NEXT: %__1 = fptosi double %__0 to i1
286 ; CHECK-NEXT: %__2 = fptosi double %__0 to i8
287 ; CHECK-NEXT: %__3 = fptosi double %__0 to i16
288 ; CHECK-NEXT: %__4 = fptosi double %__0 to i32
289 ; CHECK-NEXT: %__5 = fptosi double %__0 to i64
290 ; CHECK-NEXT: ret i32 %__4
291 ; CHECK-NEXT: }
292
293 define float @UitofpI1(i32 %p) {
294 %v = trunc i32 %p to i1
295 %vfloat = uitofp i1 %v to float
296 %vdouble = uitofp i1 %v to double
297 ret float %vfloat
298 }
299
300 ; CHECK-NEXT: define float @UitofpI1(i32 %__0) {
301 ; CHECK-NEXT: __0:
302 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i1
303 ; CHECK-NEXT: %__2 = uitofp i1 %__1 to float
304 ; CHECK-NEXT: %__3 = uitofp i1 %__1 to double
305 ; CHECK-NEXT: ret float %__2
306 ; CHECK-NEXT: }
307
308 define float @UitofpI8(i32 %p) {
309 %v = trunc i32 %p to i8
310 %vfloat = uitofp i8 %v to float
311 %vdouble = uitofp i8 %v to double
312 ret float %vfloat
313 }
314
315 ; CHECK-NEXT: define float @UitofpI8(i32 %__0) {
316 ; CHECK-NEXT: __0:
317 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i8
318 ; CHECK-NEXT: %__2 = uitofp i8 %__1 to float
319 ; CHECK-NEXT: %__3 = uitofp i8 %__1 to double
320 ; CHECK-NEXT: ret float %__2
321 ; CHECK-NEXT: }
322
323 define float @UitofpI16(i32 %p) {
324 %v = trunc i32 %p to i16
325 %vfloat = uitofp i16 %v to float
326 %vdouble = uitofp i16 %v to double
327 ret float %vfloat
328 }
329
330 ; CHECK-NEXT: define float @UitofpI16(i32 %__0) {
331 ; CHECK-NEXT: __0:
332 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i16
333 ; CHECK-NEXT: %__2 = uitofp i16 %__1 to float
334 ; CHECK-NEXT: %__3 = uitofp i16 %__1 to double
335 ; CHECK-NEXT: ret float %__2
336 ; CHECK-NEXT: }
337
338 define float @UitofpI32(i32 %v) {
339 %vfloat = uitofp i32 %v to float
340 %vdouble = uitofp i32 %v to double
341 ret float %vfloat
342 }
343
344 ; CHECK-NEXT: define float @UitofpI32(i32 %__0) {
345 ; CHECK-NEXT: __0:
346 ; CHECK-NEXT: %__1 = uitofp i32 %__0 to float
347 ; CHECK-NEXT: %__2 = uitofp i32 %__0 to double
348 ; CHECK-NEXT: ret float %__1
349 ; CHECK-NEXT: }
350
351 define float @UitofpI64(i64 %v) {
352 %vfloat = uitofp i64 %v to float
353 %vdouble = uitofp i64 %v to double
354 ret float %vfloat
355 }
356
357 ; CHECK-NEXT: define float @UitofpI64(i64 %__0) {
358 ; CHECK-NEXT: __0:
359 ; CHECK-NEXT: %__1 = uitofp i64 %__0 to float
360 ; CHECK-NEXT: %__2 = uitofp i64 %__0 to double
361 ; CHECK-NEXT: ret float %__1
362 ; CHECK-NEXT: }
363
364 define float @SitofpI1(i32 %p) {
365 %v = trunc i32 %p to i1
366 %vfloat = sitofp i1 %v to float
367 %vdouble = sitofp i1 %v to double
368 ret float %vfloat
369 }
370
371 ; CHECK-NEXT: define float @SitofpI1(i32 %__0) {
372 ; CHECK-NEXT: __0:
373 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i1
374 ; CHECK-NEXT: %__2 = sitofp i1 %__1 to float
375 ; CHECK-NEXT: %__3 = sitofp i1 %__1 to double
376 ; CHECK-NEXT: ret float %__2
377 ; CHECK-NEXT: }
378
379 define float @SitofpI8(i32 %p) {
380 %v = trunc i32 %p to i8
381 %vfloat = sitofp i8 %v to float
382 %vdouble = sitofp i8 %v to double
383 ret float %vfloat
384 }
385
386 ; CHECK-NEXT: define float @SitofpI8(i32 %__0) {
387 ; CHECK-NEXT: __0:
388 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i8
389 ; CHECK-NEXT: %__2 = sitofp i8 %__1 to float
390 ; CHECK-NEXT: %__3 = sitofp i8 %__1 to double
391 ; CHECK-NEXT: ret float %__2
392 ; CHECK-NEXT: }
393
394 define float @SitofpI16(i32 %p) {
395 %v = trunc i32 %p to i16
396 %vfloat = sitofp i16 %v to float
397 %vdouble = sitofp i16 %v to double
398 ret float %vfloat
399 }
400
401 ; CHECK-NEXT: define float @SitofpI16(i32 %__0) {
402 ; CHECK-NEXT: __0:
403 ; CHECK-NEXT: %__1 = trunc i32 %__0 to i16
404 ; CHECK-NEXT: %__2 = sitofp i16 %__1 to float
405 ; CHECK-NEXT: %__3 = sitofp i16 %__1 to double
406 ; CHECK-NEXT: ret float %__2
407 ; CHECK-NEXT: }
408
409 define float @SitofpI32(i32 %v) {
410 %vfloat = sitofp i32 %v to float
411 %vdouble = sitofp i32 %v to double
412 ret float %vfloat
413 }
414
415 ; CHECK-NEXT: define float @SitofpI32(i32 %__0) {
416 ; CHECK-NEXT: __0:
417 ; CHECK-NEXT: %__1 = sitofp i32 %__0 to float
418 ; CHECK-NEXT: %__2 = sitofp i32 %__0 to double
419 ; CHECK-NEXT: ret float %__1
420 ; CHECK-NEXT: }
421
422 define float @SitofpI64(i64 %v) {
423 %vfloat = sitofp i64 %v to float
424 %vdouble = sitofp i64 %v to double
425 ret float %vfloat
426 }
427
428 ; CHECK-NEXT: define float @SitofpI64(i64 %__0) {
429 ; CHECK-NEXT: __0:
430 ; CHECK-NEXT: %__1 = sitofp i64 %__0 to float
431 ; CHECK-NEXT: %__2 = sitofp i64 %__0 to double
432 ; CHECK-NEXT: ret float %__1
433 ; CHECK-NEXT: }
434
435 define float @BitcastI32(i32 %v) {
436 %vfloat = bitcast i32 %v to float
437 ret float %vfloat
438 }
439
440 ; CHECK-NEXT: define float @BitcastI32(i32 %__0) {
441 ; CHECK-NEXT: __0:
442 ; CHECK-NEXT: %__1 = bitcast i32 %__0 to float
443 ; CHECK-NEXT: ret float %__1
444 ; CHECK-NEXT: }
445
446 define double @BitcastI64(i64 %v) {
447 %vdouble = bitcast i64 %v to double
448 ret double %vdouble
449 }
450
451 ; CHECK-NEXT: define double @BitcastI64(i64 %__0) {
452 ; CHECK-NEXT: __0:
453 ; CHECK-NEXT: %__1 = bitcast i64 %__0 to double
454 ; CHECK-NEXT: ret double %__1
455 ; CHECK-NEXT: }
456
457 define i32 @BitcastFloat(float %v) {
458 %vi32 = bitcast float %v to i32
459 ret i32 %vi32
460 }
461
462 ; CHECK-NEXT: define i32 @BitcastFloat(float %__0) {
463 ; CHECK-NEXT: __0:
464 ; CHECK-NEXT: %__1 = bitcast float %__0 to i32
465 ; CHECK-NEXT: ret i32 %__1
466 ; CHECK-NEXT: }
467
468 define i64 @BitcastDouble(double %v) {
469 %vi64 = bitcast double %v to i64
470 ret i64 %vi64
471 }
472
473 ; CHECK-NEXT: define i64 @BitcastDouble(double %__0) {
474 ; CHECK-NEXT: __0:
475 ; CHECK-NEXT: %__1 = bitcast double %__0 to i64
476 ; CHECK-NEXT: ret i64 %__1
477 ; CHECK-NEXT: }
478
479 define void @BitcastV4xFloat(<4 x float> %v) {
480 %v4xi32 = bitcast <4 x float> %v to <4 x i32>
481 %v8xi16 = bitcast <4 x float> %v to <8 x i16>
482 %v16xi8 = bitcast <4 x float> %v to <16 x i8>
483 ret void
484 }
485
486 ; CHECK-NEXT: define void @BitcastV4xFloat(<4 x float> %__0) {
487 ; CHECK-NEXT: __0:
488 ; CHECK-NEXT: %__1 = bitcast <4 x float> %__0 to <4 x i32>
489 ; CHECK-NEXT: %__2 = bitcast <4 x float> %__0 to <8 x i16>
490 ; CHECK-NEXT: %__3 = bitcast <4 x float> %__0 to <16 x i8>
491 ; CHECK-NEXT: ret void
492 ; CHECK-NEXT: }
493
494 define void @BitcastV4xi32(<4 x i32> %v) {
495 %v4xfloat = bitcast <4 x i32> %v to <4 x float>
496 %v8xi16 = bitcast <4 x i32> %v to <8 x i16>
497 %v16xi8 = bitcast <4 x i32> %v to <16 x i8>
498 ret void
499 }
500
501 ; CHECK-NEXT: define void @BitcastV4xi32(<4 x i32> %__0) {
502 ; CHECK-NEXT: __0:
503 ; CHECK-NEXT: %__1 = bitcast <4 x i32> %__0 to <4 x float>
504 ; CHECK-NEXT: %__2 = bitcast <4 x i32> %__0 to <8 x i16>
505 ; CHECK-NEXT: %__3 = bitcast <4 x i32> %__0 to <16 x i8>
506 ; CHECK-NEXT: ret void
507 ; CHECK-NEXT: }
508
509 define void @BitcastV4xi16(<8 x i16> %v) {
510 %v4xfloat = bitcast <8 x i16> %v to <4 x float>
511 %v4xi32 = bitcast <8 x i16> %v to <4 x i32>
512 %v16xi8 = bitcast <8 x i16> %v to <16 x i8>
513 ret void
514 }
515
516 ; CHECK-NEXT: define void @BitcastV4xi16(<8 x i16> %__0) {
jvoung (off chromium) 2014/08/29 17:26:34 Function name should be V8xi16 ?
Karl 2014/09/02 17:47:57 Done.
517 ; CHECK-NEXT: __0:
518 ; CHECK-NEXT: %__1 = bitcast <8 x i16> %__0 to <4 x float>
519 ; CHECK-NEXT: %__2 = bitcast <8 x i16> %__0 to <4 x i32>
520 ; CHECK-NEXT: %__3 = bitcast <8 x i16> %__0 to <16 x i8>
521 ; CHECK-NEXT: ret void
522 ; CHECK-NEXT: }
523
524 define void @BitcastV16xi8(<16 x i8> %v) {
525 %v4xfloat = bitcast <16 x i8> %v to <4 x float>
526 %v4xi32 = bitcast <16 x i8> %v to <4 x i32>
527 %v8xi16 = bitcast <16 x i8> %v to <8 x i16>
528 ret void
529 }
530
531 ; CHECK-NEXT: define void @BitcastV16xi8(<16 x i8> %__0) {
532 ; CHECK-NEXT: __0:
533 ; CHECK-NEXT: %__1 = bitcast <16 x i8> %__0 to <4 x float>
534 ; CHECK-NEXT: %__2 = bitcast <16 x i8> %__0 to <4 x i32>
535 ; CHECK-NEXT: %__3 = bitcast <16 x i8> %__0 to <8 x i16>
536 ; CHECK-NEXT: ret void
537 ; 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