Lines Matching +full:test +full:- +full:check
1 // REQUIRES: arm-registered-target
2 // RUN: %clang_cc1 -emit-llvm -o - -triple arm-none-linux-gnueabi %s | FileCheck %s --check-prefix=…
3 // RUN: %clang_cc1 -emit-llvm -o - -triple aarch64-none-linux-gnueabi %s | FileCheck %s --check-pre…
4 …g_cc1 -emit-llvm -o - -triple arm-none-linux-gnueabi -fallow-half-arguments-and-returns %s | FileC…
5 …cc1 -emit-llvm -o - -triple aarch64-none-linux-gnueabi -fallow-half-arguments-and-returns %s | Fil…
6 // RUN: %clang_cc1 -emit-llvm -o - -triple arm-none-linux-gnueabi -fnative-half-type %s \
7 // RUN: | FileCheck %s --check-prefix=NATIVE-HALF
8 // RUN: %clang_cc1 -emit-llvm -o - -triple aarch64-none-linux-gnueabi -fnative-half-type %s \
9 // RUN: | FileCheck %s --check-prefix=NATIVE-HALF
10 // RUN: %clang_cc1 -emit-llvm -o - -x renderscript %s \
11 // RUN: | FileCheck %s --check-prefix=NATIVE-HALF
14 volatile cond_t test; variable
21 // CHECK-LABEL: define void @foo() in foo()
23 // Check unary ops in foo()
27 // CHECK: fptoui float in foo()
28 // NATIVE-HALF: fptoui half in foo()
29 test = (h0); in foo()
30 // CHECK: uitofp i32 in foo()
33 // NATIVE-HALF: uitofp i32 {{.*}} to half in foo()
34 h0 = (test); in foo()
35 // CHECK: [[F16TOF32]] in foo()
36 // CHECK: fcmp une float in foo()
37 // NATIVE-HALF: fcmp une half in foo()
38 test = (!h1); in foo()
39 // CHECK: [[F16TOF32]] in foo()
40 // CHECK: fsub float in foo()
43 // NATIVE-HALF: fsub half in foo()
44 h1 = -h1; in foo()
45 // CHECK: [[F16TOF32]] in foo()
46 // CHECK: [[F32TOF16]] in foo()
47 // NATIVE-HALF: load volatile half in foo()
48 // NATIVE-HALF-NEXT: store volatile half in foo()
50 // CHECK: [[F16TOF32]] in foo()
51 // CHECK: fadd float in foo()
52 // CHECK: [[F32TOF16]] in foo()
53 // NATIVE-HALF: fadd half in foo()
55 // CHECK: [[F16TOF32]] in foo()
56 // CHECK: fadd float in foo()
57 // CHECK: [[F32TOF16]] in foo()
58 // NATIVE-HALF: fadd half in foo()
60 // CHECK: [[F16TOF32]] in foo()
61 // CHECK: fadd float in foo()
62 // CHECK: [[F32TOF16]] in foo()
63 // NATIVE-HALF: fadd half in foo()
64 --h1; in foo()
65 // CHECK: [[F16TOF32]] in foo()
66 // CHECK: fadd float in foo()
67 // CHECK: [[F32TOF16]] in foo()
68 // NATIVE-HALF: fadd half in foo()
69 h1--; in foo()
71 // Check binary ops with various operands in foo()
72 // CHECK: [[F16TOF32]] in foo()
73 // CHECK: [[F16TOF32]] in foo()
74 // CHECK: fmul float in foo()
75 // CHECK: [[F32TOF16]] in foo()
76 // NATIVE-HALF: fmul half in foo()
78 // CHECK: [[F16TOF32]] in foo()
81 // CHECK: fmul float in foo()
82 // CHECK: [[F32TOF16]] in foo()
83 // NATIVE-HALF: fmul half in foo()
84 h1 = h0 * (__fp16) -2.0f; in foo()
85 // CHECK: [[F16TOF32]] in foo()
86 // CHECK: fmul float in foo()
87 // CHECK: [[F32TOF16]] in foo()
88 // NATIVE-HALF: fpext half in foo()
89 // NATIVE-HALF: fmul float in foo()
91 // CHECK: [[F16TOF32]] in foo()
92 // CHECK: fmul float in foo()
93 // CHECK: [[F32TOF16]] in foo()
94 // NATIVE-HALF: fpext half in foo()
95 // NATIVE-HALF: fmul float in foo()
97 // CHECK: [[F16TOF32]] in foo()
98 // CHECK: fmul float in foo()
99 // CHECK: [[F32TOF16]] in foo()
100 // NATIVE-HALF: fmul half in foo()
103 // CHECK: [[F16TOF32]] in foo()
104 // CHECK: [[F16TOF32]] in foo()
105 // CHECK: fdiv float in foo()
106 // CHECK: [[F32TOF16]] in foo()
107 // NATIVE-HALF: fdiv half in foo()
109 // CHECK: [[F16TOF32]] in foo()
111 // CHECK: fdiv float in foo()
112 // CHECK: [[F32TOF16]] in foo()
113 // NATIVE-HALF: fdiv half in foo()
114 h1 = (h0 / (__fp16) -2.0f); in foo()
115 // CHECK: [[F16TOF32]] in foo()
116 // CHECK: fdiv float in foo()
117 // CHECK: [[F32TOF16]] in foo()
118 // NATIVE-HALF: fpext half in foo()
119 // NATIVE-HALF: fdiv float in foo()
121 // CHECK: [[F16TOF32]] in foo()
122 // CHECK: fdiv float in foo()
123 // CHECK: [[F32TOF16]] in foo()
124 // NATIVE-HALF: fpext half in foo()
125 // NATIVE-HALF: fdiv float in foo()
127 // CHECK: [[F16TOF32]] in foo()
128 // CHECK: fdiv float in foo()
129 // CHECK: [[F32TOF16]] in foo()
130 // NATIVE-HALF: fdiv half in foo()
133 // CHECK: [[F16TOF32]] in foo()
134 // CHECK: [[F16TOF32]] in foo()
135 // CHECK: fadd float in foo()
136 // CHECK: [[F32TOF16]] in foo()
137 // NATIVE-HALF: fadd half in foo()
139 // CHECK: [[F16TOF32]] in foo()
141 // CHECK: fadd float in foo()
142 // CHECK: [[F32TOF16]] in foo()
143 // NATIVE-HALF: fadd half in foo()
144 h1 = ((__fp16)-2.0 + h0); in foo()
145 // CHECK: [[F16TOF32]] in foo()
146 // CHECK: fadd float in foo()
147 // CHECK: [[F32TOF16]] in foo()
148 // NATIVE-HALF: fpext half in foo()
149 // NATIVE-HALF: fadd float in foo()
151 // CHECK: [[F16TOF32]] in foo()
152 // CHECK: fadd float in foo()
153 // CHECK: [[F32TOF16]] in foo()
154 // NATIVE-HALF: fpext half in foo()
155 // NATIVE-HALF: fadd float in foo()
157 // CHECK: [[F16TOF32]] in foo()
158 // CHECK: fadd float in foo()
159 // CHECK: [[F32TOF16]] in foo()
160 // NATIVE-HALF: fadd half in foo()
163 // CHECK: [[F16TOF32]] in foo()
164 // CHECK: [[F16TOF32]] in foo()
165 // CHECK: fsub float in foo()
166 // CHECK: [[F32TOF16]] in foo()
167 // NATIVE-HALF: fsub half in foo()
168 h1 = (h2 - h0); in foo()
169 // CHECK: [[F16TOF32]] in foo()
171 // CHECK: fsub float in foo()
172 // CHECK: [[F32TOF16]] in foo()
173 // NATIVE-HALF: fsub half in foo()
174 h1 = ((__fp16)-2.0f - h0); in foo()
175 // CHECK: [[F16TOF32]] in foo()
176 // CHECK: fsub float in foo()
177 // CHECK: [[F32TOF16]] in foo()
178 // NATIVE-HALF: fpext half in foo()
179 // NATIVE-HALF: fsub float in foo()
180 h1 = (h2 - f0); in foo()
181 // CHECK: [[F16TOF32]] in foo()
182 // CHECK: fsub float in foo()
183 // CHECK: [[F32TOF16]] in foo()
184 // NATIVE-HALF: fpext half in foo()
185 // NATIVE-HALF: fsub float in foo()
186 h1 = (f2 - h0); in foo()
187 // CHECK: [[F16TOF32]] in foo()
188 // CHECK: fsub float in foo()
189 // CHECK: [[F32TOF16]] in foo()
190 // NATIVE-HALF: fsub half in foo()
191 h1 = (h0 - i0); in foo()
193 // CHECK: [[F16TOF32]] in foo()
194 // CHECK: [[F16TOF32]] in foo()
195 // CHECK: fcmp olt float in foo()
196 // NATIVE-HALF: fcmp olt half in foo()
197 test = (h2 < h0); in foo()
198 // CHECK: [[F16TOF32]] in foo()
200 // CHECK: fcmp olt float in foo()
201 // NATIVE-HALF: fcmp olt half in foo()
202 test = (h2 < (__fp16)42.0); in foo()
203 // CHECK: [[F16TOF32]] in foo()
204 // CHECK: fcmp olt float in foo()
205 // NATIVE-HALF: fpext half in foo()
206 // NATIVE-HALF: fcmp olt float in foo()
207 test = (h2 < f0); in foo()
208 // CHECK: [[F16TOF32]] in foo()
209 // CHECK: fcmp olt float in foo()
210 // NATIVE-HALF: fpext half in foo()
211 // NATIVE-HALF: fcmp olt float in foo()
212 test = (f2 < h0); in foo()
213 // CHECK: [[F16TOF32]] in foo()
214 // CHECK: fcmp olt float in foo()
215 // NATIVE-HALF: fcmp olt half in foo()
216 test = (i0 < h0); in foo()
217 // CHECK: [[F16TOF32]] in foo()
218 // CHECK: fcmp olt float in foo()
219 // NATIVE-HALF: fcmp olt half in foo()
220 test = (h0 < i0); in foo()
222 // CHECK: [[F16TOF32]] in foo()
223 // CHECK: [[F16TOF32]] in foo()
224 // CHECK: fcmp ogt float in foo()
225 // NATIVE-HALF: fcmp ogt half in foo()
226 test = (h0 > h2); in foo()
227 // CHECK: [[F16TOF32]] in foo()
229 // CHECK: fcmp ogt float in foo()
230 // NATIVE-HALF: fcmp ogt half in foo()
231 test = ((__fp16)42.0 > h2); in foo()
232 // CHECK: [[F16TOF32]] in foo()
233 // CHECK: fcmp ogt float in foo()
234 // NATIVE-HALF: fpext half in foo()
235 // NATIVE-HALF: fcmp ogt float in foo()
236 test = (h0 > f2); in foo()
237 // CHECK: [[F16TOF32]] in foo()
238 // CHECK: fcmp ogt float in foo()
239 // NATIVE-HALF: fpext half in foo()
240 // NATIVE-HALF: fcmp ogt float in foo()
241 test = (f0 > h2); in foo()
242 // CHECK: [[F16TOF32]] in foo()
243 // CHECK: fcmp ogt float in foo()
244 // NATIVE-HALF: fcmp ogt half in foo()
245 test = (i0 > h0); in foo()
246 // CHECK: [[F16TOF32]] in foo()
247 // CHECK: fcmp ogt float in foo()
248 // NATIVE-HALF: fcmp ogt half in foo()
249 test = (h0 > i0); in foo()
251 // CHECK: [[F16TOF32]] in foo()
252 // CHECK: [[F16TOF32]] in foo()
253 // CHECK: fcmp ole float in foo()
254 // NATIVE-HALF: fcmp ole half in foo()
255 test = (h2 <= h0); in foo()
256 // CHECK: [[F16TOF32]] in foo()
258 // CHECK: fcmp ole float in foo()
259 // NATIVE-HALF: fcmp ole half in foo()
260 test = (h2 <= (__fp16)42.0); in foo()
261 // CHECK: [[F16TOF32]] in foo()
262 // CHECK: fcmp ole float in foo()
263 // NATIVE-HALF: fpext half in foo()
264 // NATIVE-HALF: fcmp ole float in foo()
265 test = (h2 <= f0); in foo()
266 // CHECK: [[F16TOF32]] in foo()
267 // CHECK: fcmp ole float in foo()
268 // NATIVE-HALF: fpext half in foo()
269 // NATIVE-HALF: fcmp ole float in foo()
270 test = (f2 <= h0); in foo()
271 // CHECK: [[F16TOF32]] in foo()
272 // CHECK: fcmp ole float in foo()
273 // NATIVE-HALF: fcmp ole half in foo()
274 test = (i0 <= h0); in foo()
275 // CHECK: [[F16TOF32]] in foo()
276 // CHECK: fcmp ole float in foo()
277 // NATIVE-HALF: fcmp ole half in foo()
278 test = (h0 <= i0); in foo()
281 // CHECK: [[F16TOF32]] in foo()
282 // CHECK: [[F16TOF32]] in foo()
283 // CHECK: fcmp oge float in foo()
284 // NATIVE-HALF: fcmp oge half in foo()
285 test = (h0 >= h2); in foo()
286 // CHECK: [[F16TOF32]] in foo()
288 // CHECK: fcmp oge float in foo()
289 // NATIVE-HALF: fcmp oge half in foo()
290 test = (h0 >= (__fp16)-2.0); in foo()
291 // CHECK: [[F16TOF32]] in foo()
292 // CHECK: fcmp oge float in foo()
293 // NATIVE-HALF: fpext half in foo()
294 // NATIVE-HALF: fcmp oge float in foo()
295 test = (h0 >= f2); in foo()
296 // CHECK: [[F16TOF32]] in foo()
297 // CHECK: fcmp oge float in foo()
298 // NATIVE-HALF: fpext half in foo()
299 // NATIVE-HALF: fcmp oge float in foo()
300 test = (f0 >= h2); in foo()
301 // CHECK: [[F16TOF32]] in foo()
302 // CHECK: fcmp oge float in foo()
303 // NATIVE-HALF: fcmp oge half in foo()
304 test = (i0 >= h0); in foo()
305 // CHECK: [[F16TOF32]] in foo()
306 // CHECK: fcmp oge float in foo()
307 // NATIVE-HALF: fcmp oge half in foo()
308 test = (h0 >= i0); in foo()
310 // CHECK: [[F16TOF32]] in foo()
311 // CHECK: [[F16TOF32]] in foo()
312 // CHECK: fcmp oeq float in foo()
313 // NATIVE-HALF: fcmp oeq half in foo()
314 test = (h1 == h2); in foo()
315 // CHECK: [[F16TOF32]] in foo()
317 // CHECK: fcmp oeq float in foo()
318 // NATIVE-HALF: fcmp oeq half in foo()
319 test = (h1 == (__fp16)1.0); in foo()
320 // CHECK: [[F16TOF32]] in foo()
321 // CHECK: fcmp oeq float in foo()
322 // NATIVE-HALF: fpext half in foo()
323 // NATIVE-HALF: fcmp oeq float in foo()
324 test = (h1 == f1); in foo()
325 // CHECK: [[F16TOF32]] in foo()
326 // CHECK: fcmp oeq float in foo()
327 // NATIVE-HALF: fpext half in foo()
328 // NATIVE-HALF: fcmp oeq float in foo()
329 test = (f1 == h1); in foo()
330 // CHECK: [[F16TOF32]] in foo()
331 // CHECK: fcmp oeq float in foo()
332 // NATIVE-HALF: fcmp oeq half in foo()
333 test = (i0 == h0); in foo()
334 // CHECK: [[F16TOF32]] in foo()
335 // CHECK: fcmp oeq float in foo()
336 // NATIVE-HALF: fcmp oeq half in foo()
337 test = (h0 == i0); in foo()
339 // CHECK: [[F16TOF32]] in foo()
340 // CHECK: [[F16TOF32]] in foo()
341 // CHECK: fcmp une float in foo()
342 // NATIVE-HALF: fcmp une half in foo()
343 test = (h1 != h2); in foo()
344 // CHECK: [[F16TOF32]] in foo()
346 // CHECK: fcmp une float in foo()
347 // NATIVE-HALF: fcmp une half in foo()
348 test = (h1 != (__fp16)1.0); in foo()
349 // CHECK: [[F16TOF32]] in foo()
350 // CHECK: fcmp une float in foo()
351 // NATIVE-HALF: fpext half in foo()
352 // NATIVE-HALF: fcmp une float in foo()
353 test = (h1 != f1); in foo()
354 // CHECK: [[F16TOF32]] in foo()
355 // CHECK: fcmp une float in foo()
356 // NATIVE-HALF: fpext half in foo()
357 // NATIVE-HALF: fcmp une float in foo()
358 test = (f1 != h1); in foo()
359 // CHECK: [[F16TOF32]] in foo()
360 // CHECK: fcmp une float in foo()
361 // NATIVE-HALF: fcmp une half in foo()
362 test = (i0 != h0); in foo()
363 // CHECK: [[F16TOF32]] in foo()
364 // CHECK: fcmp une float in foo()
365 // NATIVE-HALF: fcmp une half in foo()
366 test = (h0 != i0); in foo()
368 // CHECK: [[F16TOF32]] in foo()
369 // CHECK: fcmp une float in foo()
370 // CHECK: [[F16TOF32]] in foo()
371 // CHECK: [[F16TOF32]] in foo()
372 // CHECK: [[F32TOF16]] in foo()
373 // NATIVE-HALF: fcmp une half {{.*}}, 0xH0000 in foo()
375 // Check assignments (inc. compound) in foo()
379 // NATIVE-HALF: store {{.*}} half 0xHC000 in foo()
380 h0 = (__fp16)-2.0f; in foo()
381 // CHECK: [[F32TOF16]] in foo()
382 // NATIVE-HALF: fptrunc float in foo()
385 // CHECK: sitofp i32 {{.*}} to float in foo()
386 // CHECK: [[F32TOF16]] in foo()
387 // NATIVE-HALF: sitofp i32 {{.*}} to half in foo()
389 // CHECK: [[F16TOF32]] in foo()
390 // CHECK: fptosi float {{.*}} to i32 in foo()
391 // NATIVE-HALF: fptosi half {{.*}} to i32 in foo()
394 // CHECK: [[F16TOF32]] in foo()
395 // CHECK: [[F16TOF32]] in foo()
396 // CHECK: fadd float in foo()
397 // CHECK: [[F32TOF16]] in foo()
398 // NATIVE-HALF: fadd half in foo()
400 // CHECK: [[F16TOF32]] in foo()
402 // CHECK: fadd float in foo()
403 // CHECK: [[F32TOF16]] in foo()
404 // NATIVE-HALF: fadd half in foo()
406 // CHECK: [[F16TOF32]] in foo()
407 // CHECK: fadd float in foo()
408 // CHECK: [[F32TOF16]] in foo()
409 // NATIVE-HALF: fpext half in foo()
410 // NATIVE-HALF: fadd float in foo()
411 // NATIVE-HALF: fptrunc float in foo()
413 // CHECK: [[F16TOF32]] in foo()
414 // CHECK: sitofp i32 {{.*}} to float in foo()
415 // CHECK: fadd float in foo()
416 // CHECK: fptosi float {{.*}} to i32 in foo()
417 // NATIVE-HALF: sitofp i32 {{.*}} to half in foo()
418 // NATIVE-HALF: fadd half in foo()
419 // NATIVE-HALF: fptosi half {{.*}} to i32 in foo()
421 // CHECK: sitofp i32 {{.*}} to float in foo()
422 // CHECK: [[F16TOF32]] in foo()
423 // CHECK: fadd float in foo()
424 // CHECK: [[F32TOF16]] in foo()
425 // NATIVE-HALF: sitofp i32 {{.*}} to half in foo()
426 // NATIVE-HALF: fadd half in foo()
429 // CHECK: [[F16TOF32]] in foo()
430 // CHECK: [[F16TOF32]] in foo()
431 // CHECK: fsub float in foo()
432 // CHECK: [[F32TOF16]] in foo()
433 // NATIVE-HALF: fsub half in foo()
434 h0 -= h1; in foo()
435 // CHECK: [[F16TOF32]] in foo()
437 // CHECK: fsub float in foo()
438 // CHECK: [[F32TOF16]] in foo()
439 // NATIVE-HALF: fsub half in foo()
440 h0 -= (__fp16)1.0; in foo()
441 // CHECK: [[F16TOF32]] in foo()
442 // CHECK: fsub float in foo()
443 // CHECK: [[F32TOF16]] in foo()
444 // NATIVE-HALF: fpext half in foo()
445 // NATIVE-HALF: fsub float in foo()
446 // NATIVE-HALF: fptrunc float in foo()
447 h0 -= f2; in foo()
448 // CHECK: [[F16TOF32]] in foo()
449 // CHECK: sitofp i32 {{.*}} to float in foo()
450 // CHECK: fsub float in foo()
451 // CHECK: fptosi float {{.*}} to i32 in foo()
452 // NATIVE-HALF: sitofp i32 {{.*}} to half in foo()
453 // NATIVE-HALF: fsub half in foo()
454 // NATIVE-HALF: fptosi half {{.*}} to i32 in foo()
455 i0 -= h0; in foo()
456 // CHECK: sitofp i32 {{.*}} to float in foo()
457 // CHECK: [[F16TOF32]] in foo()
458 // CHECK: fsub float in foo()
459 // CHECK: [[F32TOF16]] in foo()
460 // NATIVE-HALF: sitofp i32 {{.*}} to half in foo()
461 // NATIVE-HALF: fsub half in foo()
462 h0 -= i0; in foo()
464 // CHECK: [[F16TOF32]] in foo()
465 // CHECK: [[F16TOF32]] in foo()
466 // CHECK: fmul float in foo()
467 // CHECK: [[F32TOF16]] in foo()
468 // NATIVE-HALF: fmul half in foo()
470 // CHECK: [[F16TOF32]] in foo()
472 // CHECK: fmul float in foo()
473 // CHECK: [[F32TOF16]] in foo()
474 // NATIVE-HALF: fmul half in foo()
476 // CHECK: [[F16TOF32]] in foo()
477 // CHECK: fmul float in foo()
478 // CHECK: [[F32TOF16]] in foo()
479 // NATIVE-HALF: fpext half in foo()
480 // NATIVE-HALF: fmul float in foo()
481 // NATIVE-HALF: fptrunc float in foo()
483 // CHECK: [[F16TOF32]] in foo()
484 // CHECK: sitofp i32 {{.*}} to float in foo()
485 // CHECK: fmul float in foo()
486 // CHECK: fptosi float {{.*}} to i32 in foo()
487 // NATIVE-HALF: sitofp i32 {{.*}} to half in foo()
488 // NATIVE-HALF: fmul half in foo()
489 // NATIVE-HALF: fptosi half {{.*}} to i32 in foo()
491 // CHECK: sitofp i32 {{.*}} to float in foo()
492 // CHECK: [[F16TOF32]] in foo()
493 // CHECK: fmul float in foo()
494 // CHECK: [[F32TOF16]] in foo()
495 // NATIVE-HALF: sitofp i32 {{.*}} to half in foo()
496 // NATIVE-HALF: fmul half in foo()
499 // CHECK: [[F16TOF32]] in foo()
500 // CHECK: [[F16TOF32]] in foo()
501 // CHECK: fdiv float in foo()
502 // CHECK: [[F32TOF16]] in foo()
503 // NATIVE-HALF: fdiv half in foo()
505 // CHECK: [[F16TOF32]] in foo()
507 // CHECK: fdiv float in foo()
508 // CHECK: [[F32TOF16]] in foo()
509 // NATIVE-HALF: fdiv half in foo()
511 // CHECK: [[F16TOF32]] in foo()
512 // CHECK: fdiv float in foo()
513 // CHECK: [[F32TOF16]] in foo()
514 // NATIVE-HALF: fpext half in foo()
515 // NATIVE-HALF: fdiv float in foo()
516 // NATIVE-HALF: fptrunc float in foo()
518 // CHECK: [[F16TOF32]] in foo()
519 // CHECK: sitofp i32 {{.*}} to float in foo()
520 // CHECK: fdiv float in foo()
521 // CHECK: fptosi float {{.*}} to i32 in foo()
522 // NATIVE-HALF: sitofp i32 {{.*}} to half in foo()
523 // NATIVE-HALF: fdiv half in foo()
524 // NATIVE-HALF: fptosi half {{.*}} to i32 in foo()
526 // CHECK: sitofp i32 {{.*}} to float in foo()
527 // CHECK: [[F16TOF32]] in foo()
528 // CHECK: fdiv float in foo()
529 // CHECK: [[F32TOF16]] in foo()
530 // NATIVE-HALF: sitofp i32 {{.*}} to half in foo()
531 // NATIVE-HALF: fdiv half in foo()
534 // Check conversions to/from double in foo()
537 // NATIVE-HALF: fptrunc double {{.*}} to half in foo()
540 // CHECK: [[MID:%.*]] = fptrunc double {{%.*}} to float in foo()
543 // NATIVE-HALF: [[MID:%.*]] = fptrunc double {{%.*}} to float in foo()
544 // NATIVE-HALF: fptrunc float {{.*}} to half in foo()
549 // NATIVE-HALF: fpext half {{.*}} to double in foo()
554 // CHECK: fpext float [[MID]] to double in foo()
555 // NATIVE-HALF: [[MID:%.*]] = fpext half {{.*}} to float in foo()
556 // NATIVE-HALF: fpext float [[MID]] to double in foo()